早些年Eclipse時代Android打包采用的
ant
,現在AndroidStudio時代采用的
Gradle
,目前的開發模式都是采用靈活開發,如果仍采用手動打包給QA提測未免太耽誤事了,目前衆多公司采用的是自動化打包政策+自動化測試,本文是Jenkins自動化建構的第一篇,玩轉Android項目的自動化打包,來自早些時候個人整理的有道雲筆記,不對之處請指出。前方高能,巨圖衆多!
jenkins工作流程
jenkins安裝
一般公司自動化建構都會将jenkins配置到Tomcat下,無論是jenkins還是tomcat都需要jdk。
準備工作
1.Java jdk下載下傳
java jdk下載下傳、安裝、配置環境變量,安裝過程忽略。
2.Tomcat下載下傳
tomcat下載下傳,安裝,配置環境變量,安裝過程忽略。
需要注意,tomcat預設端口8080,此端口很容易被其他服務占用,可根據自己需求修改tomcat端口号。
3.jenkins下載下傳
jenkins下載下傳有多種類型,主要看目前的系統環境。一般我們選war包形式下載下傳,後續結合tomcat進行安裝。
jenkins安裝
這裡還是以war包結合tomcat來說,安裝過程很簡單,直接放到tomcat根目錄webapps下,tomcat啟動時會自動解壓出一個jenkins檔案夾。
jenkins home位置修改
jenkins安裝後預設在C槽User下會生成個工作區(.jenkins),将來的插件、配置,以及建立的jobo都在此檔案夾下,預設是不需要環境變量的,但是有些時候我們需要将此檔案夾放到一個安全的位置,防止系統損壞或者重裝系統這些配置丢失。這個時候就要修改工作區的環境變量了。
jenkins啟動
啟動tomcat, 輸入jenkins的伺服器位址
http://xxx.xxx.xxx.xxx:8080/jenkins/
,一路下來按照提示進行操作,設定root使用者資訊,安裝相關插件(剛開始不建議完全安裝推薦的插件,可以選擇跳過,你也可以看一下推薦的插件有哪些,選擇性安裝),然後就回到首頁了:
安裝插件
漢化:
Localization: Chinese (Simplified)
問題:jenkins無法安裝插件
找到插件管理最後一項:
滑到最下邊找到
Upload Site
,将預設的https改為http,儲存修改:
http://updates.jenkins-ci.org/update-center.json
如果一直下載下傳失敗,可全局開啟vpn(個人建議),當然也可以将上邊的位址切換為國内鏡像:
http://mirror.xmission.com/jenkins/updates/current/update-center.json
jenkins角色配置
1. 添加使用者
路徑:Manage Jenkins->Manage Users
預設是你自己的超級使用者root,你可以在此處添加第二個,第三個使用者。
2. 設定使用者權限
2.1 安裝插件
Role-based Authorization Strategy
2.2 授權政策
路徑:Manage Jenkins->Configure Global Security
儲存。
2.3 角色管理和配置設定角色
路徑:Manage Jenkins->Manage and Assign Roles
- 管理角色:就是把角色分一下類,例如超級管理者有哪些、QA有哪些、普通使用者有哪些。
- 配置設定角色:就是把上邊的角色配置設定到個人。
2.3.1 管理角色
這裡配置三種權限角色:管理者模式、普通模式和匿名模式(Anonymous),配置項如上,将來普通模式可以配置設定給QA供打包測試,匿名模式可以配置設定給不登入模式下檢視項目,當然如果有别的角色需要我們還可以再進行添加。
2.3.2 配置設定角色
這一步就是将權限配置設定到個人,Anonymous配置設定匿名模式下的權限。
以上隻是基本的,我們還可以實作某人可以看到某些項目,或者針對某個項目有固定的權限等,這裡就不說了。
簡單了解系統設定
使用Html展示消息
1.安裝插件
OWASP Markup Formatter Plugin
2.标記格式器
路徑:Manage Jenkins->Configure Global Security
3.添加Html通知體
建立項目
安裝插件:
- Git,因為我們的代碼是git管理的。
- Gradle
配置建構環境
配置JDK、Git、Gradle相關變量,路徑:Manage Jenkins->Global Tool Configuration
準備建立項目
1.建立項目
2.設定源碼源
這裡的憑據,如果項目位址在域裡面,并且登入人是域使用者,可以不用設定憑據了。
3.設定Gradle建構
主要關注兩點:
- gradle版本:建議和項目gradle版本保持一緻。
- 設定gradle打包指令,圖上給的隻是簡單的。
clean:每次建構前clean一下項目;
assembleDebug:建構debug包
-stacktrace-debug:輸出日志棧,列印日志資訊。
更多gradle打包指令,可以進行百度,這裡就不多說了。
4.建構後操作
建構後主要用于打包産物的輸出、存檔。
- 選擇Archive the artifacts,比對建構後的輸出産物。
- 打包後我們會在項目首頁看到最後一次建構成功後産物的歸檔。
5.項目建構
回到項目首頁,點選Build Now,即可看到建構過程:
點選建構條,進到項目中可以檢視日志輸出:
6.自動清除曆史建構
參數化建構
下載下傳插件:
- Build With Parameters
- Persistent Parameter
說明:安裝
Build With Parameters Plugin
為了實作參數化建構,安裝
Persistent Parameter Plugin
為了實作建構時預設參數值取自上次建構的參數(當然如果要實作該功能,應該需要添加該插件對應的參數)
1. 設定建構類型
選擇Choice Parameter
在gradle建構類型地方進行替換
2. 設定建構分支
選擇Git Parameter
在源碼管理的地方進行替換
當然你也可以選擇Choice Parameter,類似設定建構類型一樣,自己發揮咯。我自己就是用這種方式實作的。
放一張首頁的截圖:
展示二維碼
為了展示二維碼,需要知道二維碼存放的具體路徑,然後二維碼的掃描出來的結果必須是apk的具體路徑,是以需要經過以下幾步:
- 将建構後的apk重命名,友善生成二維碼(明确将來的apk存放位址)
- 将建構生成的apk,拷貝到伺服器具體路徑下,我這裡的伺服器就是我本機。
- 根據apk的伺服器路徑生成二維碼,并存放在伺服器某個位置。
生成二維碼需要用到二維碼生成庫包,我這裡分享一個:
QRCode.jar
生成二維碼的指令:
java -jar [存放生成jar包的路徑/QRCode.jar] url=[二維碼掃描結果字元串] image=[二維碼的名字.jpg] save=[二維碼存放的位置]
window腳本
1.我們按照上邊的過程将其寫成window腳本指令,打開window batch command視窗
2.輸入腳本内容:
set buildApk=app\build\outputs\apk\%BuildFlavor%\%BuildType%\*.apk
set apkName=ehistore_%BuildBranch%_%BuildFlavor%_%BuildType%_%BUILD_ID%
set jenkinsBuildDir=F:\Workspaces\project_other\tomcat-8.5.39\webapps\jenkins_build
set jenkinsBuildResDir=%jenkinsBuildDir%\res
set jenkinsBuildApkDir=%jenkinsBuildDir%\apks
set apkDownLoadUrl=http://192.xxx.x.xxx:8080/jenkins_build/apks/%apkName%.apk
ren %buildApk% %apkName%.apk
copy %buildApk% %jenkinsBuildApkDir%
java -jar %jenkinsBuildResDir%\QRCode.jar url=%apkDownLoadUrl% image=%apkName%.jpg save=%jenkinsBuildApkDir%
3.下載下傳插件:
Build Name and Description Setter
該插件主要用于修改建構名字和建構描述展示,利用描述内容我們來展示二維碼。
添加插件部件:
Changes build description添加描述内容:
<img src="http://192.xxx.x.xxx:8080/jenkins_build/apks/ehistore_${BuildBranch}_${BuildFlavor}_${BuildType}_${BUILD_ID}.jpg" height="180" width="180"/>
4.具體設定如下
生成效果如下:
最後
本文主要帶你玩轉Jenkins中實作Android項目自動化打包,這是第一篇,後續還有二、三篇,如果喜歡順便點贊+關注哦