成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

讓程序員變懶的工具 : Jenkins + 蒲公英

移動開發
經常看到很多博文里面講’懶惰’是一個優秀程序猿的良好品質,這一點我深以為然,因為在程序猿的工作中總是充滿了重復勞動,也許正是因為這個原因,導致大部分程序猿慢慢變得懶惰,而那些沒變懶的程序猿他們慢慢滅絕了~~~。而對于懶惰這個詞,我們不能曲解它的意思,并不是怠倦、消沉的對待工作,而是當一個程序員遇到重復的工作時,懶惰的程序員首先想到的是我要開發出一個工具自動執行這些工作。

關于懶惰

經常看到很多博文里面講’懶惰’是一個優秀程序猿的良好品質,這一點我深以為然,因為在程序猿的工作中總是充滿了重復勞動,也許正是因為這個原因,導致大部分程序猿慢慢變得懶惰,而那些沒變懶的程序猿他們慢慢滅絕了~~~。而對于懶惰這個詞,我們不能曲解它的意思,并不是怠倦、消沉的對待工作,而是當一個程序員遇到重復的工作時,懶惰的程序員首先想到的是我要開發出一個工具自動執行這些工作。

為什么需要工具

當 UI 妹子給你一大堆圖片而沒有給你加上 @2x 后綴時,看著妹子可憐的眼神,怎么忍心讓妹子們返工,懶惰的程序員就在想了,這特么是一個循環重復的勞動,為啥不寫個腳本自動給每張圖片文件名加上一個 @2x 后綴呢,分分鐘搞定,然后準時下班約會去了。。。。

所以很早之前我的***個開源工具 dSYM 分析工具 就是這么來的,當我連在命令行中續修改了幾個友盟統計后臺收集到異常后,我發現這就是一個重復而且繁瑣的勞動啊,所以我便花了兩個多小時做了一個 APP 應用,這樣以后我每次需要做的只是:1)打開應用,2)拖入 dSYM 文件 3)輸入異常地址,便得到異常信息了。

而寫這篇文章則講述了我是如何一步一步從 1)手動打包 –> 2)Jenkins 打包,手動發布 –> 3)Jenkins 打包 + 蒲公英 分發 的。

起因

對于發包這個問題,相信是每個程序猿哥哥心中揮之不去的痛,而測試妹子們也在每次馬上就發的承諾中得出一個結論 : “你是個大騙子”。

所以每次被測試妹子追著要測試包,產品經理說給我裝一個開發中的新版本瞧瞧唄,后臺哥哥說給我安裝一個某某老版本的包調試一下啊。。。然后每次不得暫停下手中的工作,切換到某個版本,Archive。。。。終于有一次答應測試妹子吃飯前會給他們發包后,忙著忙著就忘掉直接去吃飯了,看著妹子 QQ 上發來各種鄙視的表情,這不是我想要的人生啊,我一定要改變在測試妹子心中的形象,所以自動化構建這件事情提上日程.

使用 Jenkins 半自動化

我直接選用了已經很成熟的 Jenkins 持續集成解決方案,至于如何配置就不做過多介紹了,網上有不少這類的文章。有了 Jenkins 后,給我帶來最便利的一點就是,每次打包的時候,直接在公司的 Mac 服務器上進行操作,而我還可以繼續進行手上的工作,打包完成后把 ipa 包發給測試,同時也教會了測試如何從 Jenkins 上下載已經打包好的 ipa 文件,就這樣我可以隨時在手機上打開公司內網的 Jenkins 打包,當我把這一切告訴測試妹子的時候,她用期望的眼神看著我說:“這是真的么。。。”

Jenkins + 蒲公英 升級

就這樣用了一段時間,也沒遇到什么問題,或許是比較愛折騰,我發現每次 Jenkins 打包好了之后,我還需要手動去下載,或者讓測試他們下載,當測試拿到文件后,還需要將手機連到電腦用 iTunes 或者第三方工具安裝文件,我想要是 Jenkins 打包完成后會自動通知測試更新并安裝該多好,而且之前也聽說過第三方的分發平臺 “蒲公英”,于是我去蒲公英網站看了一番,很高興的是他們開放上傳 APP 和安裝 APP 等 API,有了這個東西,我的想法便完全可以實現了:1)Jenkins 打包 2)打包成功后 IPA 文件上傳到 Tomcat 服務器 3)通過 API 把 IPA 文件傳給 蒲公英 4)上傳成功后把安裝地址通過郵件發送給測試。 5)測試直接在手機上打開地址安裝。

流程圖大概像這樣:
 

圖片

1.IPA 文件上傳到 Tomcat 服務器

由于每次 Jenkins 打包的時候,編譯后的文件是放在項目根目錄下的 build 文件夾里面,每次 build 的時候這個文件夾內的文件都會被覆蓋,所以每次 build 后我都會通過 FTP 把 IPA 文件上傳到 Tomcat 上備份,同時還可以方便提供給別人下載,比如在給測試發送蒲公英的安裝地址時,同時也可以給出 IPA 下載地址。

* 開啟 Mac FTP-server

Mac 電腦本身是支持 FTP 服務的,只不過系統默認關閉了,Mountain Tweaks 這款軟件可以很方便的修改系統的一些設置,比如是否開啟打開 Window 動畫,是否顯示用戶的 Library 文件夾,其中有一個選項就是是否開啟系統的 FTP-server 功能。
 

圖片

* 配置 Jenkins 的 FTP Server

Mac服務器支持 FTP-server 后,我在 Jenkins 上安裝了 Publish Over FTP Plugin 這個插件,這個插件可以將指定的文件發送到選中的 FTP 服務器上去,安裝完插件后,在 Jenkins 的系統設置中會多出一項 Publish over FTP 的設置,因為 Tomcat 和 Jenkins 是在一臺電腦上,所以 Hostname 直接指向本地,Remote Directory 也直接指向 Tomcat 的 webapps 下對應 app 的目錄。配置好后可以點 Test Configuration 測試一下,如果顯示 success,則成功了。

圖片

* 在 Job 的設置里面指定上傳到 FTP 的文件

Jenkins 配置好 FTP Server 后,接下來就需要在 Job 中去設置打包成功后把哪些文件上傳到指定的 FTP Server 中去了。在 增加構建后操作步驟中 有一個 Send build artifacts over FTP 選項,這里首先需要選擇我們之前配好的 FTP Server。Source files 是我們構建目錄下 build 文件夾內所有的文件,Remove prefix設置為 build 是告訴插件創建路徑的時候不要包含 build,Remote directory則是我們指定的 FTP Server 上需要創建的目錄,這里我以 Jenkins 構建的版本號去創建文件夾,之后取文件的時候,路徑便會很方便拼接。

圖片

#p#

2.通過 API 把 IPA 文件傳給 蒲公英

打包成功了,并且文件也備份到 Tomcat 上去之后,接下來就需要編寫腳本了,腳本需要的功能是:1)上傳 IPA 文件到 蒲公英 2)發郵件通知測試。這兩點通過腳本是很好實現的,已經放在 GitHub 上,如果想將腳本應用到自己的環境中,最主要的是如下這幾行代碼 :

圖片

uKey、file_name、_api_key、installPassword這四個值是根據自己的情況配置的。project_name的值很重要,涉及到很多地方:1)tomcat 的 webapps 目錄下面要有 project_name 對應的目錄,因為在獲取 ipa_file_tomcat_http_url 的時候,是需要 project_name的, 還有就是獲取發給蒲公英的 IPA 文件時也需要知道 project_name

接著就需要讓 Jenkins 去執行這個腳本了,通過對 Jenkins 插件的搜索,找到一個叫 Post-Build Script Plug-in 的插件,功能官方介紹寫的很清楚:PostBuildScript makes it possible to execute a set of scripts at the end of the build.。

安裝完這個插件后,在 Job 的 增加構建后操作步驟 中會多出一個 Execute a set of scripts 的選項,這里我只配置了 Build steps 中的 Execute shell,讓它用 Python編譯器去執行項目根目錄下的腳本,還有就是 Execute script only if build success 勾選上:

圖片

這樣當 Jenkins 打包成功后,便會執行此腳本,最終達到了我的目的。

最終收到的郵件大概是這樣的:

圖片

如果是在手機上打開郵件的話,可以直接使用第三種方式:點我直接安裝,這種方式最方便,其次是第二種,蒲公英在線安裝,***一種便是自己下載 IPA 包到本地,使用工具安裝。

到這兒之前設想的都已經實現了,整個過程中從開發的角度來說,需要的只是點擊一下 Jenkins 中的 立即構建 按鈕,然后就繼續做手頭上的事情把!

總結

教科書上把會不會制造工具當做人和動物的根本區別,我覺得這也是判斷一個好程序員的標準之一,優秀的程序員總是會去尋找好的工具,或者自己去創造一些工具來提高自己的生產效率,他們通過工具把那些浪費在重復勞動上的時間花在了更有意義的事情上去。

任何工具出現的最初目的都是為了提高生產效率,很慶幸在 iOS 開發的這個圈子中有一大批的先驅者,他們創造并開源了很多優秀的工具,為這個環境奠定了一個良好的基礎,所以在工作或生活中,多創造工具,讓自己變得更懶,卻更有價值!

責任編輯:林師授 來源: answer-huang
相關推薦

2011-09-06 09:02:06

程序員

2013-04-08 15:39:15

程序員

2013-08-05 09:55:47

程序員

2023-02-16 08:23:07

2021-08-24 06:38:37

Node.js COW 文件復制

2023-09-13 15:06:24

2022-10-24 09:00:47

畫圖工具程序員XMind

2021-08-28 23:26:14

程序員編碼電腦

2015-06-16 13:00:43

程序員跳槽原因

2011-08-29 17:05:55

2013-08-20 09:33:59

程序員

2013-10-31 09:36:43

程序員程序高手

2015-07-20 09:21:19

程序員非程序員技能

2016-03-02 10:49:08

程序員快樂

2020-06-05 07:52:25

程序員離職編碼

2011-05-13 14:34:02

程序員

2014-04-14 16:02:01

2014-07-01 09:43:55

程序員算法

2015-12-07 11:44:31

程序員厭倦工作

2015-12-09 09:17:11

情緒厭倦程序員
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品无码专区在线观看 | 国产精品毛片无码 | 中文字幕av在线 | 国产精品视频免费观看 | 精品一区二区三区免费视频 | 亚洲欧洲小视频 | 亚洲成人www | 亚洲不卡视频 | 精品欧美乱码久久久久久 | 欧美阿v | 亚洲国产一区二区三区 | 国产一区二区三区在线 | 国产欧美精品在线观看 | 在线观看中文字幕dvd播放 | 亚洲精品一区二区冲田杏梨 | 天堂av中文在线 | 三级黄色片在线观看 | a在线视频观看 | 国产精品国产三级国产aⅴ中文 | 久久久999精品| 99久久免费精品视频 | 亚洲精品久久久久久下一站 | 九色在线视频 | 午夜精品91 | 国产精品1区2区3区 一区中文字幕 | 一区在线播放 | 成人精品一区二区三区 | 成人网在线观看 | 伊人婷婷 | 亚洲综合五月天婷婷 | 日本一区二区三区四区 | 亚洲高清在线观看 | 成人在线观看免费视频 | 欧美精品一区在线 | 国产免费一区二区三区 | 香蕉视频在线播放 | 精品综合久久久 | 国产一区二区视频在线 | 日本午夜一区二区三区 | 密乳av| 中文字幕亚洲一区二区三区 |