本文主要介紹在Mac上使用Jenkins+Git+Gradle插件搭建Android持續(xù)集成打包工具。
準(zhǔn)備工作
這個階段主要包括各種環(huán)境的搭建,主要是指安裝JDK、SDK帜平、Jenkins、配置Jenkins等梅鹦。
1裆甩、Java環(huán)境
jenkins運(yùn)行環(huán)境依賴Java環(huán)境,所以安裝Jenkins之前必須安裝JDK和JRE齐唆。安裝好之后配置環(huán)境變量淑掌。這里就不詳細(xì)介紹了。
2蝶念、安裝Jenkins
打開terminal抛腕,輸入brew install jenkins
命令自動下載安裝Jenkins服務(wù)芋绸。
安裝成功之后的提示語如下:
3、配置Jenkins
-
在terminal輸入命令
jenkins
來啟動Jenkins服務(wù)担敌。啟動成功的界面如下:
服務(wù)啟動后摔敛,打開瀏覽器,在地址中輸入
localhost:8080
全封,可以看到會提示輸入Jenkins管理員密碼马昙,直接把對應(yīng)路徑下的密碼copy一下,然后輸入進(jìn)去即可刹悴。-
密碼輸入之后行楞,出現(xiàn)一個等待頁面,等了一會土匀,出現(xiàn)一個
離線
頁面:
Google一下子房,發(fā)現(xiàn)是Jenkins沒有辦法正常聯(lián)網(wǎng),可以通過下面的辦法解決:
打開一個新Tab就轧,輸入網(wǎng)址http://localhost:8080/pluginManager/advanced
证杭,進(jìn)入代理設(shè)置頁面,頁面最底下有個升級站點妒御,把鏈接中的https改為http
解愤。然后重啟服務(wù)即可。
-
重啟服務(wù)后乎莉,就進(jìn)入到自定義Jenkins頁面送讲,該頁面是選擇安裝插件。如果對Jenkins不熟悉惋啃,直接安裝推薦的插件(多數(shù)情況下可以滿足使用需求)哼鬓。
-
安裝好插件,進(jìn)入創(chuàng)建管理員界面肥橙,創(chuàng)建一個管理員用戶
-
實例配置魄宏,暫使用默認(rèn)值:
-
配置完成秸侣,可以開始使用Jenkins了
進(jìn)入登錄頁存筏、首頁
4、配置JDK味榛、SDK椭坚、Gradle
-
進(jìn)入
系統(tǒng)管理->系統(tǒng)設(shè)置
頁面,找到全局屬性
模塊搏色,添加一個環(huán)境變量ANDROID_HOME
:
-
進(jìn)入
系統(tǒng)管理->全局工具配置
頁面善茎,新增JDK和Gradle工具,如圖:
配置Gradle工具時注意勾選自動安裝
選項频轿。
搭建Android持續(xù)集成打包工程
1垂涯、新建任務(wù)
Jenkins構(gòu)建都是以任務(wù)(job)為單位烁焙,所以需要新建一個任務(wù)。
如圖有幾種構(gòu)建類型可以選擇耕赘,最常用的是第一種骄蝇,也是本文我要介紹的Demo使用的類型。(我們實際項目中使用的是流水線pipeline構(gòu)建方式)操骡。
2九火、配置任務(wù)
任務(wù)創(chuàng)建好之后,進(jìn)入任務(wù)界面册招,如圖:
點擊配置按鈕岔激,進(jìn)入配置頁面:
如圖可知,配置分為General是掰、源碼管理虑鼎、構(gòu)建觸發(fā)器、構(gòu)建環(huán)境冀惭、構(gòu)建震叙、構(gòu)建后操作幾個部分。下面我們簡單介紹這幾個模塊(Jenkins功能強(qiáng)大散休,可選配置很多媒楼,本文不可能完全介紹,而且本人也沒有用到那么多配置戚丸,只能把本Demo用到的配置介紹一下划址,其他的需要各位在實際用的過程中去研究)。
-
General
是通用配置限府,可以添加項目描述夺颤。
參數(shù)化構(gòu)建過程
選項可能會比較常用,里面可以配置一些參數(shù)胁勺,并且定義好參數(shù)的可取值和默認(rèn)值世澜,每次構(gòu)建的時候可以選擇對應(yīng)的值傳入構(gòu)建腳本中,實現(xiàn)不同的構(gòu)建內(nèi)容署穗。舉個例子:應(yīng)用有三種buildType:Debug寥裂、Preview、Release案疲,就可以在此處配置一個BUILD_TYPE封恰,提供這三個可選值,選擇之后褐啡,可以傳入到腳本中使用assemble${BUILD_TYPE}
诺舔。
如果不使用自定義的工作空間
,jenkins的默認(rèn)工作空間是/Users/user_zf/.jenkins/workspace/Marble_Freestyle
。
-
源碼管理
必須得有項目的源碼低飒,才能構(gòu)建項目许昨。多數(shù)情況下,源碼是存放在Git服務(wù)器上褥赊。此處需要配置三個信息:倉庫地址车要、憑證、構(gòu)建分支崭倘。
倉庫地址很簡單翼岁,就是存放項目源碼的Git倉庫。
構(gòu)建分支也很簡單司光,就是用來構(gòu)建打包的Git分支琅坡。
憑證是指對該Git倉庫的訪問權(quán)限,可以在Jenkins中配置:
常用的憑證有兩種:Username with password
和SSH Username with private key
残家。
如果Repository Url以https
開頭榆俺,則使用第一種憑證。如果是以ssh
開頭坞淮,則使用第二種憑證茴晋。第一種憑證很簡單,直接配置自己Git服務(wù)器的用戶名和密碼即可回窘。第二種復(fù)雜一些诺擅,如圖:
除了Git用戶名之外,還需要填寫一個Private Key
啡直,這是什么東西呢烁涌?
不用著急,慢慢看>泼佟撮执!
如果是用ssh方式訪問Git倉庫,需要讓Git服務(wù)器認(rèn)識你的電腦才行舷丹,否則不能成功訪問抒钱。所以需要在安裝Jenkins的電腦上用命令生成一個秘鑰對,把公鑰添加到Git服務(wù)器颜凯,私鑰配置在jenkins服務(wù)上谋币,這樣就可以正常訪問Git倉庫了。
生成秘鑰對的命令如下:
cd .ssh //在用戶目錄下輸入該命令装获,進(jìn)入存放秘鑰的目錄
rm id_rsa //刪除私鑰(可能原來已經(jīng)存在)
rm id_rsa.pub //刪除公鑰(可能原來已經(jīng)存在)
ssh-keygen -t rsa -C "git用戶名" //一路回車 生成新用戶的公鑰和私鑰
cat id_rsa/id_rsa.pub //查看公鑰和私鑰的內(nèi)容
生成秘鑰對之后瑞信,可以查看一下:
在Git服務(wù)器上添加公鑰厉颤,讓Git服務(wù)器認(rèn)識該電腦穴豫,我們使用的Git服務(wù)是GitLab,進(jìn)入GitLab的Profile Settings->SSH Keys
界面Add SSH Key
:
把id_rsa.pub
的內(nèi)容全部拷貝到Key輸入框中保存。
在Jenkins上配置憑證精肃,然后把id_rsa
中的內(nèi)容全部拷貝到上面提到的Private Key
輸入框中秤涩,生成一個憑證。
在Git的憑證處選擇該憑證司抱,就可以在構(gòu)建時成功訪問Git倉庫筐眷,并且拉取代碼到Job的工作空間中。
Repository Url习柠、憑證匀谣、分支填寫完畢之后,最好勾選一下Shallow clone
资溃,拉取代碼過程中不會拉取該分支歷史版本的代碼武翎。否則項目過大,歷史版本很多溶锭,需要拉取很長時間宝恶,一旦超過10分鐘,就直接報Timeout異常趴捅。當(dāng)然垫毙,也可以包超時時間設(shè)置長一點來解決超時異常。
-
構(gòu)建觸發(fā)器
拱绑,從字面上很好理解综芥,就是什么時候出發(fā)構(gòu)建任務(wù)。此處有一些選項猎拨,我們用到的是定時構(gòu)建
可以點擊問號查看語法毫痕。例如 H 7-15/5 * * 0-6
,表示周一到周六每天早上07:xx迟几、中午12:xx打一個包 消请。5個參數(shù)分別表示:
- 分鐘 0-59
- 小時 0-23
- DOM day of month 1-31
- MONTH 1-12
- DOW day of week 0-7
如果什么都不選,可以任務(wù)主界面手動觸發(fā)構(gòu)建任務(wù)类腮。
-
構(gòu)建環(huán)境
可以不用配置 -
構(gòu)建
臊泰,表示構(gòu)建過程⊙潦啵可以自定義構(gòu)建步驟缸逃,如圖:
通過不同插件,可以執(zhí)行不同的命令厂抽。Android的打包任務(wù)相信大家都不陌生需频,即assembleDebu / assembleRelease
。
-
構(gòu)建后操作
筷凤,構(gòu)建打包完成之后昭殉,可以做很多有用的操作苞七,比如歸檔Apk文件、郵件/釘釘通知相關(guān)人員挪丢、打多渠道包......
3蹂风、執(zhí)行任務(wù)
上面介紹過,可以通過條件觸發(fā)構(gòu)建任務(wù)乾蓬,也可以手動觸發(fā)惠啄。在job主頁,點擊立即構(gòu)建
即可構(gòu)建任務(wù)任内。
構(gòu)建成功之后就可以在app的build目錄下找到對應(yīng)的Apk文件撵渡。
至此,整個搭建過程介紹完畢了死嗦,本文演示的Demo是最基本的構(gòu)建流程姥闭,在實際的項目持續(xù)集成中,往往比這個復(fù)雜越走,但了解基本的操作流程之后棚品,就可以自行研究Jenkins中更加好用的功能。