前言
開發(fā)人員手動打包不僅浪費開發(fā)時間,打斷開發(fā)思路,又不能及時給測試或者運營人員安裝包,費力不討好,你懂得,所有就有了自動化打包。大部分公司都配置的有打包平臺,但有的朋友還不知道如何配置以及工作原理,本文就來分享下基于Jenkins的Android自動化打包。
為什么用Jekins自動化打包
為什么用jenkins打包,以及jenkins優(yōu)點,官網(wǎng) https://jenkins.io/ 自行查看。
怎樣使Jekins自動化打Android開發(fā)包
jenkins下載與安裝
jenkins安裝分兩種,一種是下載jenkins安裝包,本地安裝jenkins,但是這樣本地會多一個用戶名為jenkins的用戶,另一種是下載jenkins的war包。建議直接下載jenkins的war包,然后將jenkins的war包放在tomcat的webapps目錄下,然后在本地訪問jenkins的管理頁面,同樣適用于服務(wù)器。具體如何搭建服務(wù)器,可以參考這篇文章,Android開發(fā)者如何搭建服務(wù)器。
tomcat進(jìn)入 https://tomcat.apache.org/ 官網(wǎng),下載最新的 tomcat 安裝包并且安裝。
進(jìn)入jenkins 的官網(wǎng) https://jenkins.io/ , 根據(jù)你搭建平臺的不同,下載 jenkins war 包 ,我這里用 mac 平臺做演示。

通過指令啟動tomcat,然后打開 http://localhost:8080/jenkins/, 進(jìn)入jenkins管理頁面。

第一次打開jenkins頁面會給一個管理員用戶,并且給出默認(rèn)管理員密碼。

如果你想修改管理員密碼,執(zhí)行下面命令。
cd /Users/fengyongge/.jenkins/secrets
open initialAdminPassword
然后在這個文件里面添加新的管理員密碼。
jenkins配置
jenkins配置android的自動化打包,主要分為插件的安裝,全局工具配置,環(huán)境變量的配置3部分。
系統(tǒng)管理-管理插件
插件的安裝取決于你打包時候各個功能的需求,如果只是簡單的打包,需要的插件并不多,以下介紹幾種插件。
| 注解 | 解釋 |
|---|---|
| Android Lint Plugin | 允許Jenkins直接調(diào)用Gradle構(gòu)建腳本 |
| Gradle Plugin | 允許Jenkins直接調(diào)用Gradle構(gòu)建腳本 |
| Git plugin | 允許Jenkins直接調(diào)用Gradle構(gòu)建腳本 |
| Upload to pgyer | 上傳APK、IPA文件到pgyer(蒲公英) |
| Publish Over SSH | 通過ssh發(fā)送構(gòu)建工件 |
| SSH plugin | 使用ssh協(xié)議遠(yuǎn)程執(zhí)行shell命令。 |
| …… | …… |
然后通過搜索過濾你想要安裝的插件,然后restart jenkins。

系統(tǒng)管理-全局工具配置
全局工具配置,既可以選擇在線安裝,也可以選擇本地已經(jīng)安裝的,然后添加工具配置,建議后者,必經(jīng)這些工具你在開發(fā)的時候也需要。
首先你本地或者服務(wù)器上要安裝jdk,gradle,sdk,然后去配置環(huán)境變量,最后添加到j(luò)enkins的工具配置,筆者的配置。
#jdk
JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home"
export PATH="$JAVA_HOME/bin:$PATH:."
#gradle
export GRADLE_HOME=/Applications/Android\ Studio.app/Contents/gradle/gradle-4.6
export PATH=$GRADLE_HOME/bin:$PATH
環(huán)境變量配置后,可以去驗證是否配置成功,如果配置成功后,可以根據(jù)你配置的環(huán)境變量的變量名去驗證。
echo $JAVA_HOME
/Library/java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/bin
echo $GRADLE_HOME
/Applications/Android Studio.app/Contents/gradle/gradle-4.6
mac上gradle的環(huán)境配置有可能遇到坑,可以參考這篇文章Mac上配置gradle環(huán)境。除此之外,如果你的版本控制工具如果是git的話,需要本地安裝git,然后配置git環(huán)境變量,然后在jenksin的系統(tǒng)管理-全局工具配置配置Jdk,Git,Gradle本地環(huán)境。

系統(tǒng)管理-系統(tǒng)設(shè)置
系統(tǒng)設(shè)置,就是配置全局設(shè)置和路徑,在這里,我們只需要配置android sdk的環(huán)境變量。

系統(tǒng)管理-新建項目-配置項目
在jenkins管理頁面,新建任務(wù),輸入一個任務(wù)名稱,選擇構(gòu)建一個自由風(fēng)格的軟件項目,點擊確定。

創(chuàng)建項目成功的頁面

項目上面的展示構(gòu)建成功,構(gòu)建失敗,以及上次構(gòu)建的時間信息等,這時候你點擊右邊的運行會提示打包失敗,因為你還需要對項目進(jìn)行配置,項目的配置主要分為General 源碼管理,構(gòu)建觸發(fā)器,構(gòu)建,構(gòu)建后操作。點擊項目名稱,進(jìn)入configure配置。

General
源碼管理:
選擇無或者git。如果選擇git,需要添加項目的git地址,以及項目的分支,以及對項目管理權(quán)限的git賬戶信息。

選擇無的話,可以通過shell腳本,執(zhí)行進(jìn)入本地checkout的項目,然后進(jìn)行更新代碼進(jìn)行打包操作指令,前提是本地已經(jīng)配置了git賬號信息,下面在有介紹。
構(gòu)建觸發(fā)器
構(gòu)建觸發(fā)器常用的就是定時構(gòu)建,例如每天的10點,觸發(fā)自動構(gòu)建,打一個新鮮出爐的新包。定時構(gòu)建語法自行百度,在這不做探討。

構(gòu)建:
構(gòu)建這塊應(yīng)該是比較重要的,構(gòu)建可以通過gradle腳本,或者shell腳本等。如果是通過gradle腳本命令配置如下。

如果源碼管理你選擇的是無的話,就可以通過shell腳本,來進(jìn)行更新代碼,切換分支,執(zhí)行打包,指令如下。筆者使用的都是shell腳本,也推薦這種做法。
cd /Users/fengyongge/git/component
source /etc/profile
git checkout master
git pull
/Applications/Android\ Studio.app/Contents/gradle/gradle-4.6/bin/gradle -p
/Users/fengyongge/git/component --stacktrace --info clean assembleRelease
下面是通過shell腳本上傳到第三方分發(fā)平臺,除了shell腳本外,還可以使用插件,構(gòu)建后的操作會做介紹。
cd /Users/fengyongge/git/component
apk_file=`find . -name '*.apk' | grep -v 'unaligned' | tail -n 1`
echo $apk_file
echo "curl -F "file=$apk_file" -F "uKey=fceccf48c73404982ba2e2af49fc43d3" \
-F "_api_key=daa2afcb08bdb21fcfd9645d6aa8c841" https://qiniu-storage.pgyer.com/apiv1/app/upload"
curl -F "file=@$apk_file" -F "uKey=fceccf48c73404982ba2e2af49fc43d3" \
-F "_api_key=daa2afcb08bdb21fcfd9645d6aa8c841" https://qiniu-storage.pgyer.com/apiv1/app/upload

構(gòu)建后操作
如果將安裝包上傳到第三方分發(fā)平臺,不習(xí)慣腳本的方式的話,下面有更簡單的方式,有可視頁面,通過安裝插件,填寫信息即可。
如何上傳到蒲公英
在管理插件頁面,搜索上傳蒲公英平臺插架-Upload to pgyer,然后安裝,安裝之后你在構(gòu)建后的操作會看到有Upload to payer with apiV1。

選擇Upload to payer with apiV1填寫你的蒲公英uKey、api_key、apk安裝路徑,這個插件詳情使用,具體參考 https://www.pgyer.com/doc/view/plugin_github

如何上傳到fir.im
由于開發(fā)者沒有將插件上傳到插件庫里面,所以在插件管理里面搜索不到,因此fir的插件需要現(xiàn)在本地上傳下,然后在使用。主要步驟如下:
1:下載插件,在系統(tǒng)管理-插件管理-高級-上傳插件
2:安裝插件
3:使用插件,配置-構(gòu)建后操作-增加構(gòu)建后操作步驟-Upload to fir.im
4:填寫 API Token
具體參考 http://blog.fir.im/jenkins/

jenkins配置完之后,就可以運行任務(wù)了,這時候幾分鐘后你在你的蒲公英或者fir.im平臺就能看到新的apk安裝包。如果打包失敗,可以去點擊你的項目去Console Output看控制臺輸入,然后重新打包即可。蒲公英下載頁面截圖 :

fir下載頁面截圖:

寫在最后
以上就是我對基于Jenkins的Android自動化打包操作步驟的分享。如有問題,評論探討,謝謝!