天天看點

Jenkins自動化建構(一)玩轉Android項目自動化打包

早些年Eclipse時代Android打包采用的

ant

,現在AndroidStudio時代采用的

Gradle

,目前的開發模式都是采用靈活開發,如果仍采用手動打包給QA提測未免太耽誤事了,目前衆多公司采用的是自動化打包政策+自動化測試,本文是Jenkins自動化建構的第一篇,玩轉Android項目的自動化打包,來自早些時候個人整理的有道雲筆記,不對之處請指出。前方高能,巨圖衆多!

jenkins工作流程

Jenkins自動化建構(一)玩轉Android項目自動化打包

jenkins安裝

一般公司自動化建構都會将jenkins配置到Tomcat下,無論是jenkins還是tomcat都需要jdk。

準備工作

1.Java jdk下載下傳

java jdk下載下傳、安裝、配置環境變量,安裝過程忽略。

2.Tomcat下載下傳

tomcat下載下傳,安裝,配置環境變量,安裝過程忽略。

需要注意,tomcat預設端口8080,此端口很容易被其他服務占用,可根據自己需求修改tomcat端口号。

3.jenkins下載下傳

jenkins下載下傳有多種類型,主要看目前的系統環境。一般我們選war包形式下載下傳,後續結合tomcat進行安裝。

Jenkins自動化建構(一)玩轉Android項目自動化打包

jenkins安裝

這裡還是以war包結合tomcat來說,安裝過程很簡單,直接放到tomcat根目錄webapps下,tomcat啟動時會自動解壓出一個jenkins檔案夾。

jenkins home位置修改

jenkins安裝後預設在C槽User下會生成個工作區(.jenkins),将來的插件、配置,以及建立的jobo都在此檔案夾下,預設是不需要環境變量的,但是有些時候我們需要将此檔案夾放到一個安全的位置,防止系統損壞或者重裝系統這些配置丢失。這個時候就要修改工作區的環境變量了。

Jenkins自動化建構(一)玩轉Android項目自動化打包

jenkins啟動

啟動tomcat, 輸入jenkins的伺服器位址

http://xxx.xxx.xxx.xxx:8080/jenkins/

,一路下來按照提示進行操作,設定root使用者資訊,安裝相關插件(剛開始不建議完全安裝推薦的插件,可以選擇跳過,你也可以看一下推薦的插件有哪些,選擇性安裝),然後就回到首頁了:

Jenkins自動化建構(一)玩轉Android項目自動化打包

安裝插件

漢化:

Localization: Chinese (Simplified)

問題:jenkins無法安裝插件

找到插件管理最後一項:

Jenkins自動化建構(一)玩轉Android項目自動化打包

滑到最下邊找到

Upload Site

,将預設的https改為http,儲存修改:

http://updates.jenkins-ci.org/update-center.json

Jenkins自動化建構(一)玩轉Android項目自動化打包

如果一直下載下傳失敗,可全局開啟vpn(個人建議),當然也可以将上邊的位址切換為國内鏡像:

http://mirror.xmission.com/jenkins/updates/current/update-center.json

jenkins角色配置

1. 添加使用者

路徑:Manage Jenkins->Manage Users

Jenkins自動化建構(一)玩轉Android項目自動化打包

預設是你自己的超級使用者root,你可以在此處添加第二個,第三個使用者。

2. 設定使用者權限

2.1 安裝插件

Role-based Authorization Strategy

2.2 授權政策

路徑:Manage Jenkins->Configure Global Security

Jenkins自動化建構(一)玩轉Android項目自動化打包

儲存。

2.3 角色管理和配置設定角色

路徑:Manage Jenkins->Manage and Assign Roles

Jenkins自動化建構(一)玩轉Android項目自動化打包
  • 管理角色:就是把角色分一下類,例如超級管理者有哪些、QA有哪些、普通使用者有哪些。
  • 配置設定角色:就是把上邊的角色配置設定到個人。

2.3.1 管理角色

Jenkins自動化建構(一)玩轉Android項目自動化打包

這裡配置三種權限角色:管理者模式、普通模式和匿名模式(Anonymous),配置項如上,将來普通模式可以配置設定給QA供打包測試,匿名模式可以配置設定給不登入模式下檢視項目,當然如果有别的角色需要我們還可以再進行添加。

2.3.2 配置設定角色

Jenkins自動化建構(一)玩轉Android項目自動化打包

這一步就是将權限配置設定到個人,Anonymous配置設定匿名模式下的權限。

以上隻是基本的,我們還可以實作某人可以看到某些項目,或者針對某個項目有固定的權限等,這裡就不說了。

簡單了解系統設定

使用Html展示消息

1.安裝插件

OWASP Markup Formatter Plugin

2.标記格式器

路徑:Manage Jenkins->Configure Global Security

Jenkins自動化建構(一)玩轉Android項目自動化打包

3.添加Html通知體

Jenkins自動化建構(一)玩轉Android項目自動化打包

建立項目

安裝插件:

  1. Git,因為我們的代碼是git管理的。
  2. Gradle

配置建構環境

配置JDK、Git、Gradle相關變量,路徑:Manage Jenkins->Global Tool Configuration

Jenkins自動化建構(一)玩轉Android項目自動化打包

準備建立項目

1.建立項目

Jenkins自動化建構(一)玩轉Android項目自動化打包

2.設定源碼源

Jenkins自動化建構(一)玩轉Android項目自動化打包

這裡的憑據,如果項目位址在域裡面,并且登入人是域使用者,可以不用設定憑據了。

3.設定Gradle建構

Jenkins自動化建構(一)玩轉Android項目自動化打包

主要關注兩點:

  1. gradle版本:建議和項目gradle版本保持一緻。
  2. 設定gradle打包指令,圖上給的隻是簡單的。
clean:每次建構前clean一下項目;
assembleDebug:建構debug包
-stacktrace-debug:輸出日志棧,列印日志資訊。
           

更多gradle打包指令,可以進行百度,這裡就不多說了。

4.建構後操作

Jenkins自動化建構(一)玩轉Android項目自動化打包

建構後主要用于打包産物的輸出、存檔。

  1. 選擇Archive the artifacts,比對建構後的輸出産物。
  2. 打包後我們會在項目首頁看到最後一次建構成功後産物的歸檔。

5.項目建構

回到項目首頁,點選Build Now,即可看到建構過程:

Jenkins自動化建構(一)玩轉Android項目自動化打包

點選建構條,進到項目中可以檢視日志輸出:

Jenkins自動化建構(一)玩轉Android項目自動化打包

6.自動清除曆史建構

Jenkins自動化建構(一)玩轉Android項目自動化打包

參數化建構

下載下傳插件:

  1. Build With Parameters
  2. Persistent Parameter

說明:安裝

Build With Parameters Plugin

為了實作參數化建構,安裝

Persistent Parameter Plugin

為了實作建構時預設參數值取自上次建構的參數(當然如果要實作該功能,應該需要添加該插件對應的參數)

Jenkins自動化建構(一)玩轉Android項目自動化打包

1. 設定建構類型

選擇Choice Parameter

Jenkins自動化建構(一)玩轉Android項目自動化打包

在gradle建構類型地方進行替換

Jenkins自動化建構(一)玩轉Android項目自動化打包

2. 設定建構分支

選擇Git Parameter

Jenkins自動化建構(一)玩轉Android項目自動化打包

在源碼管理的地方進行替換

Jenkins自動化建構(一)玩轉Android項目自動化打包

當然你也可以選擇Choice Parameter,類似設定建構類型一樣,自己發揮咯。我自己就是用這種方式實作的。

放一張首頁的截圖:

Jenkins自動化建構(一)玩轉Android項目自動化打包

展示二維碼

為了展示二維碼,需要知道二維碼存放的具體路徑,然後二維碼的掃描出來的結果必須是apk的具體路徑,是以需要經過以下幾步:

  1. 将建構後的apk重命名,友善生成二維碼(明确将來的apk存放位址)
  2. 将建構生成的apk,拷貝到伺服器具體路徑下,我這裡的伺服器就是我本機。
  3. 根據apk的伺服器路徑生成二維碼,并存放在伺服器某個位置。

生成二維碼需要用到二維碼生成庫包,我這裡分享一個:

QRCode.jar

生成二維碼的指令:

java -jar [存放生成jar包的路徑/QRCode.jar] url=[二維碼掃描結果字元串] image=[二維碼的名字.jpg] save=[二維碼存放的位置]
           

window腳本

1.我們按照上邊的過程将其寫成window腳本指令,打開window batch command視窗

Jenkins自動化建構(一)玩轉Android項目自動化打包

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

該插件主要用于修改建構名字和建構描述展示,利用描述内容我們來展示二維碼。

添加插件部件:

Jenkins自動化建構(一)玩轉Android項目自動化打包

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項目自動化打包

生成效果如下:

Jenkins自動化建構(一)玩轉Android項目自動化打包

最後

本文主要帶你玩轉Jenkins中實作Android項目自動化打包,這是第一篇,後續還有二、三篇,如果喜歡順便點贊+關注哦

繼續閱讀