【Android】Jenkins自動化打包到蒲公英(Mac版)
最近專案不是很忙,所以花了兩天時間研究了一下android的自動化打包,方便別人也方便自己。
目錄
1、準備過程
(1)配置adb
如圖,可以開啟終端,輸入adb version檢視是否已經配置好adb,已經配置好的同志可以跳過此環節,以下是adb命令的配置:
1、在終端輸入sudo vim ~/.bash_profile,開啟.bash_profile,如果沒有該檔案則會新建一個檔案。
2、在開啟的檔案中,按i進入輸入模式,在檔案末尾加入以下內容:
export PATH=${PATH}:/Users/xxx/Library/Android/sdk/platform-tools
export PATH=${PATH}:/Users/xxx/Library/Android/sdk/tools
將其中的xxx替換成自己的使用者,如果sdk路徑不是這個的話,將自己的sdk中的platform-tools和tools資料夾的路徑新增進去。(有的mac中Library中被翻譯成了資源庫,但是路徑名還是Libaray,這個路徑是隱藏的,檢視用command+shift+.)
3、新增完成後點esc退出編輯模式,然後輸入:wq儲存並退出。
4、在終端輸入source ~/.bash_profile完成變更,然後輸入adb version檢視是否配置成功。
(2)配置gradle
如圖,在終端中輸入gradle -version(檢視adb沒有-),如果已經配置好的通知可以跳過此節,以下為gradle的配置:
gradle命令的配置也是在.bash_profile檔案中,所以修改方法跟配置adb類似。
1、同配置adb第一步。
2、開啟檔案後在檔案末未輸入:
GRADLE_HOME=xxx
export GRADLE_HOME
export PATH=GRADLE_HOME/bin
將xxx替換為自己的gradle路徑(最好與專案的gradle版本一致,降低出錯的可能)。
3、4步同配置adb3、4步,最後輸入gradle -version檢視是否配置成功。
(3)配置tomcat
推薦下載,可以不下載。
1、下載完解壓到隨意路徑,然後跟配置adb和gradle一樣,在.bash_profile檔案中加入tomcat下bin目錄的路徑。
export PATH=$PATH:xxx/bin
xxx替換為tomcat路徑
2、在終端用cd命令進入bin目錄下,輸入startup.sh,出現如下圖所以的Tomact started,表示啟動成功,進入第4步,出現Permission denied字樣進入第3步。
3、遇到許可權問題,在終端輸入sudo chmod 755 xxx/bin/*.sh (xxx表示你tomcat放至的路徑),回車後再次執行第二步。
4、啟動成功後在瀏覽器中輸入localh:8080,即可啟動tomcat,成功後出現如下圖所示畫面。
2、Jenkins打包
(1)下載Jenkins
Jenkins下載地址:[https://jenkins.io/download/]
安裝Jenkins有多種方式,一種是直接下載pkg進行安裝,用此種方法安裝則不用下載tomcat,一種是配置tomcat,然後下載jenkins的war包,將war包放在tomcat目錄下的webapps資料夾下。但是推薦第二種安裝方式,因為直接用pkg安裝,會生成一個新的jenkins使用者,我用第一種方法怎麼配都沒有配成功,所以採用了第二種方式重新配置了一次,這也是我準備工作中有配置tomcat的原因。下圖用紅線標出的為war包下載。
將war包放到tomcat的webapps資料夾下後,在瀏覽器中輸入localhost:8080/jenkins即可啟動jenkins。
(2)配置Jenkins
1、啟動jenkins後,首先會讓輸入密碼,上邊寫了檔案所在的路徑,可以複製此路徑到瀏覽器中檢視檔案。
2、密碼填完以後需要選擇外掛安裝,建議直接選擇推薦安裝(必須的外掛:git plugin)。
3、外掛安裝完成後,進入使用者建立頁面,可以不建立選擇admin使用者。
4、進入頁面後,選擇系統管理中的系統設定,選擇環境變數後,增加鍵值對列表,鍵必須為ANDROID_HOME,值為sdk的路徑。
(3)建立自動化打包任務
1、選擇新建任務。
2、輸入任務名稱,選擇構建一個自由風格的軟體專案,點選確定。
3、選擇引數化構建
可以選擇字元引數,用來描述app版本,選擇選項引數,用來表示打debug或releast包,或者什麼渠道的包,這個引數後續也有用處,例子如下:
4、原始碼管理,我使用的是gitlab,所以選擇git,使用svn的同志可以選擇subversion。
點選add以後,進入選擇身份驗證的頁面,沒有ssh key的,選擇使用者名稱和密碼,有ssh key的選擇ssh驗證(注意,這裡填寫的是private key,id_rsa檔案中的key,不是id_rsa.pub中的key),填寫完成後,點選add即可完成身份驗證的新增。
然後選擇對應的身份驗證,紅線中的是專案的分支。
5、構建觸發器,選擇Build periodically和Poll SCM,分別輸入:
0 2 * * *
/5 * * *
分別表示,每天凌晨兩點構建一次和每五分鐘檢視一次,如果有變動就構建。
6、增加構建步驟,選擇Invoke Gradle script
出現構建步驟後,點選高階,出現如下頁面,在Tasks中輸入build或者clean build,在Root Build script中輸入你想要包生成的位置,在Build File中輸入專案的build.gradle的路徑,即在Root Build script路徑的後邊加/build.gradle,可以不輸入這兩項,專案會有個預設構建地址,具體地址可以再jenkins的系統管理中檢視。
7、儲存上述結果,來到任務頁面,點選Build with Parameters。
選擇引數後,點選開始構建,即可完成自動化打包。
構建成功,就可以在Root Build script輸入的路徑或者預設的路徑裡邊構建成功,進入該目錄->進入app資料夾->build資料夾->outputs資料夾->apk資料夾,即可檢視生成的apk。
3、上傳到蒲公英
上傳到蒲公英就簡單多了,在構建時,增加一個構建步驟,選擇Execute shell,在command中填入:
curl -F “[email protected]/${APP_VERSION}_(此處還有一個dollar符號){BUILD_TYPE}.apk” -F “uKey=” -F “_api_key=” https://www.pgyer.com/apiv1/app/upload
將xxx替換為apk所在路徑,${APP_VERSION}代表引用上邊填入的引數,同理BUILD_TYPE也是上邊填寫的引數,這樣可以實現動態生成包的名稱,當然,具體的動態生成apk名稱的程式碼需要在app的build.gradle中實現。本來是想在apk名稱中加入當前的日期,需要Dynamic Parameter這個外掛,但是這個外掛由於有安全漏洞,所以已經沒法安裝了,如果有可以替代的方法,可以告訴我。uKey和_api_key中填如蒲公英中對應的UserKey和ApiKey。儲存以後,再次構建,就可以實現自動打包釋出到蒲公英的操作啦。
蒲公英官方參考:https://www.pgyer.com/doc/view/jenkins
這篇部落格是我在完成整個流程以後才開始寫的,所以可能會有所遺漏,有發現的同志可以及時提出來。