文章目錄
持續集成
Jenkins
蒲公英
Fir.im
Jenkins的安裝
初識Jenkins
General
源碼管理
構建觸發器
構建
構建后的操作
開始構建
Fir.im上傳
蒲公英上傳
郵件通知(原生)
郵件通知(python腳本)
0
持續集成
持續集成是一種軟件開發實踐。團隊開發成員經常集成它們的工作,大多數成員每天至少集成一次,也就意味著每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現集成錯誤。
持續集成的價值在于
減少風險
一天中進行多次的集成,并做了相應的測試,這樣有利于檢查缺陷,了解軟件的健康狀況
減少重復過程
節省時間、費用和工作量
任何時間、任何地點生成可部署的軟件
可以經常對源代碼進行一些小改動,并將這些改動和其他的代碼進行集成。如果出現問題,項目成員馬上就會被通知到,問題會時間被修復。
增強項目的可見性
持續集成讓我們能夠注意到趨勢并進行有效的決策。如果沒有真實或新的數據提供支持,項目就會遇到麻煩,每個人都會提出他好的猜測。
Jenkins
Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。
根據官方定義,Jenkins有以下的用途:
構建項目
跑測試用例檢測bug
靜態代碼檢測
部署
IOS中Jenkins流程
2
蒲公英
蒲公英全方位幫助開發者輕松內測應用。
3
Fir.im
fir.im為開發者提供測試應用極速發布,應用崩潰實時分析、用戶反饋收集等一系列開發測試效率工具服務,幫助開發者將更多精力放在產品的開發與應用的優化上。
4
Jenkins的安裝
由于需要執行Shell腳本,所以本篇文章的運行環境為Mac OS,如果你希望在linux環境下搭建持續集成環境進,同樣可以按照本篇文章的流程進行部署
JDK安裝、Android SDK安裝、Gradle安裝、Tomcat安裝
這些沒什么好說的了吧,只要你會開發Android,這些對你來說都是小菜一碟,特別注意不要忘記對環境變量進行配置,不然后續會有問題
下載war(http://mirrors.jenkins-ci.org/)包,選擇新的Release版本
將war放到tomcat的webapps目錄下,然后啟動tomcat。啟動完成之后打開localhosrt:8080/jenkins頁面即可進行安裝
輸入密碼,路徑已經在下方紅字部分給出,直接用記事本打開復制粘貼即可
輸入密碼
密碼
選擇推薦配置即可
安裝
正在安裝
安裝成功
5
初識Jenkins
系統配置
在Jenkins左側有一下幾個配置項
這里主要提及一下的是系統管理。這里面有插件管理、用戶管理、腳本管理等功能,在后續的使用過程中我們會對這里有一些操作。
涉及到本文中Android構建的插件主要是Gradle plugin、Git plugin、SSH Credentials Plugin等,這些在安裝過程中已經覆蓋了
系統配置
新建項目
點擊“新建”按鈕并選擇“構建一個自由風格的軟件項目”,完了之后會進入到任務的配置界面,配置好之后任務會出現在如上圖右邊的任務列表中。
新建項目
新建完成
任務配置
選擇新建類型之后,就會彈出任務配置頁面。你隨時可以通過項目中的“配置”按鈕對此進行修改
全流程可配置項
General
項目的基本信息
源碼管理
Jenkins支持使用版本管理工具來進行源碼管理,這里我選擇使用Git。在Repository URL中輸入項目地址,這里我用的是我自己GitHub上的一個工程作為Demo的源碼。點擊Add按鈕添加一下我Github的用戶名及密碼便于Jenkins自動去下載代碼。后選擇構建的分支,我這里使用的是master分支。
源碼管理
添加Github賬號
構建觸發器
Jenkins觸發的時機配置,如果都不選,則為手動構建,需要點擊“立即構建”按鈕才構建。
這里簡單介紹一下各個功能
Build periodically:不關心源碼是否發生變化,按照一定的周期進行項目構建
Build when a change is pushed to GItHub:只要GitHub上面源碼一更新就立即進行構建
Poll SCM:定時檢查源碼變更,如果有更新就下載新的代碼下來,然后執行構建
Build periodically和Poll SCM都支持日程表的設置,有5個參數:
個參數代表的是分鐘 minute,取值 0~59;
第二個參數代表的是小時 hour,取值 0~23;
第三個參數代表的是天 day,取值 1~31;
第四個參數代表的是月 month,取值 1~12;
后一個參數代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
如
(1) H/15 為每15分鐘構建一次
(2) H H(9-16)/2 1-5 星期一到星期五每天9點到下午5點,每隔2小時構建一次
具體使用請參考Jenkins里面的說明,就是點藍色的問號即可顯示
構建
我們使用gradle進行構建工作,這個沒什么好說的。命令為gradlew clean assembleRelease,打出正式版的包
構建后的操作
可以讓Jenkins在構建完之后執行諸如郵件通知等功能,這個我們稍后再說
這里我僅僅設置了存根的位置
開始構建
配置完畢之后,我們需要在jenkins的workspace下找到自己的工程,把local.properties放進去,不然gradle編譯的時候找不到SDK的路徑。之后我們點擊立即構建
構建中
各個顏色代表的意義如下:
天氣的晴雨表代表了項目的質量,這也是Jenkins的一個特色。
出錯之后,選擇"Console Output"查看具體錯誤,錯誤都是在底下的,一定要拉到頁面底下去查看,不然會出現誤導
構建錯誤
構建成功,顯示相應信息
構建成功
構建歷史
6
Fir.im上傳
打包成功了,下面就到了部署的環節了
Fir.im非常簡單,因為它提供一個插件,把整個上傳功能都幫你實現好了
下載插件(http://7xju1s.com1.z0.glb.clouddn.com/fir-plugin-1.9.4.hpi)
進入"系統管理"->"管理插件"->"高級"->"上傳插件"
在"構建后操作"選擇"Upload to fir.im",并添加api token并校驗
立即構建項目,成功之后
在你的Console Output里面有如下日志
Fir.im日志
Fir.im應用列表也可以查看到相關信息
Fir.im應用列表
其余操作請參考Fir.im官網介紹(http://blog.fir.im/jenkins/)
7
蒲公英上傳
與Fir.im不同,它是通過shell腳本執行post上傳指令的
上傳App請求接口返回參數
這邊怎么使用先放一放,待稍后介紹腳本如何使用時候再說
8
郵件通知(原生)
Jenkins自己也有一套郵件系統,但是我覺得這個與腳本發郵件相比,稍微略顯雞肋。為什么這么說?你想想看看,之前fir.im上傳接口回調回來的數據怎樣才能歸檔到郵件里面來呢?當然你說相關配置寫死是可以實現的,這沒錯,但是你覺得這樣好嗎?
不管怎么說,如果要求沒有那么高,僅僅是通知相關人員一下而已,這個還是有很大便利之處的
進入"系統管理"->"系統設置"->"Extended E-mail Notification",點下"高級"
再去下方郵件通知配置,一樣要點"高級"
后必須設置"Jenkins Location"。上面只是配置郵件服務器地址、賬號和密碼,但是Jenkins不知道采用哪個郵箱去發送,系統管理員郵件地址必須與上圖設置的用戶保持一致。
點擊測試,你應該可以收到相應郵件
配置"構建后操作",把接收人郵箱還有郵件相關信息都寫好。這里寫什么都是無所謂的,保持HTML格式就行
終收到的效果也是很好的
Email收到的格式
9
郵件通知(python腳本)
有了腳本,就等于一切盡在我手中。我在網上找到很多關于Jenkins打包的腳本,全是IOS的相關處理,android反正我是沒有找到,那么我就直接拿IOS的改改就行了。IOS的2個地址是jenkins-pgy-python
(https://github.com/RunningYoung/jenkins-pgy-python)與JenkinsTemplateForApp
(https://github.com/debugtalk/JenkinsTemplateForApp)。這里我就不貼代碼了,我就簡單說一下思路,后面我會把代碼一起放出。這邊結合到蒲公英的上傳腳本,先將圖片上傳,拿到返回的json值,然后獲取到git上相關commit信息,一并通過smtp郵件方法進行發送
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。