天天看點

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

先看下最終實作的效果圖:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

功能描述:

可以選擇不同環境不同版本不同的SVN分支,打包APP,并實作打包完成後自動上傳到蒲公英生成安裝二維碼

總體步驟如下:

1、  下載下傳最新版Jenkins的war包,并安裝JDK(JDK8及以上版本)

2、  運作Jenkins,并安裝必須插件,配置好項目執行的Jenkins參數

3、  配置項目build.gradle裡面的腳本

4、  編寫腳本,使安裝包上傳到蒲公英平台生成二維碼

正式開撸

一、下載下傳新版Jenkins

到 Jenkins下載下傳latest的war包(Generic Java package(.war))

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

下載下傳好後先找個目錄放好,後面會用上。

接下來安裝JDK

JDK安裝必須注意自己的系統是32位的還是64位的,安裝不對應,和Jenkins搭起來各種問題都會有(意思就是要你安裝JDK8對應系統計算位數的版本)。

如果已經安裝了JDK并配置了環境變量,可以通過以下指令檢視目前安裝的版本:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

二、運作Jenkins,安裝插件,配置參數

網上的很多相關博文,都說把Jenkins挂載到Tomcat下去運作,但是我挂載到Tomcat下webapps目錄後,再啟動Tomcat,輸入對應的jenkins通路路徑,卻給我展示的是404之類的頁面,多次嘗試以及讓劉永正也幫忙嘗試,結果都是404之類的頁面,無助,隻能另求他法。如有同學成功使用tomcat挂載這個方案的話,跪求指導。

下面,說說我使用的運作方式:

通過指令行執行指令 java –jar %jenkins本地目錄%/Jenkins.war ,如果一切正常,就可以啟動jenkins了,這種方式啟動的jenkins,預設頁面通路路徑就是 http://localhost:8080/  ,通路路徑可以在jenkins系統管理-系統設定裡面修改:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

該指令首次啟動jenkins時,會在使用者的主目錄下生成.jenkins檔案(如我的檔案路徑是C:\Users\aceaddi_liang\.jenkins),如果啟動時給生成了一串密鑰,請記錄起來,後面進入jenkins主目錄時會用到。

如啟動指令執行一切正常,輸入通路路徑後,就會進入jenkins主界面:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

接下來,安裝必要的插件:

菜單欄選中 系統管理-插件管理 ,進入插件管理頁面:

會看到4個tab欄:可更新、可選插件、已安裝和進階

前3個好了解,進階tab欄,可以上傳本地插件檔案進行安裝。我這裡有2個插件(scriptler和dynamicparameter)就是通過進階tab欄提供的功能安裝上的。

必要的插件有如下:

Android Lint Plugin

Android SigningPlugin

Build Timeout

Build-name-setter

Credentials BindingPlugin

Credentials Plugin

Description setterplugin

Dynamic ParameterPlug-in

Gradle Plugin

Pipeline

Scriptler

SSH CredentialsPlugin

SSH Slaves plugin

Subversion

Timestamper

Workspace CleanupPlugin

目前已知這些插件是要安裝上的,有些可能有依賴關系,沒有全部列出了,如果有問題,可以對比我這裡安裝的插件的截圖:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

安裝好插件,下面就要配置好必須的參數了,自動化建構全靠這些關鍵參數的配置了!

回到jenkins主界面-〉系統管理-〉全局工具配置:配置好JDK和Gradle。 由于我本地已經安裝好了JDK和Gradle,是以隻需為其指定路徑即可:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

注意,自動安裝  不必勾上。

再回到系統管理->系統設定界面,配置一些全局屬性:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

ANDROID_HOME配置android sdk路徑;

PYTHON配置python路徑;

GRADLE_OPTS配置gradle運作記憶體;

_JAVA_OPTIONS配置Java執行運存。

其中後二者,需要根據自己電腦系統環境調試配置,如果配置小了,自動化建構過程中會報Java Heap相關異常。

然後,回到主界面-〉建立任務頁面,輸入任務名稱(如AutoPkg),選擇“建構一個自由風格的軟體項目”,确定,ok。

這樣就會在主界面出現一個剛建立的任務清單:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

接下來,點選任務名稱“AutoPkg”,進入項目建構主界面:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

點選菜單“Build with Parameters”可進入最終的項目建構效果圖頁面,在此頁面會列出所有配置的參數,選擇或設值所需參數,即可進行自動化建構,但在這之前,我們先要配置好項目的建構參數。

選擇菜單中“配置”進入該任務的具體參數配置頁面:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

在General欄目下面勾選“參數化建構過程”,然後點選“添加參數”,選擇添加如下類型的參數:

選項參數BUILD_TYPE:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

選項參數PRODUCT_FLAVOR:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

字元參數APP_VERSION_NAME:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

List Subversion tags(and more)參數SVN_TAG:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

Dynamic Parameter動态參數BUILD_TIME:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

然後,General欄的最後面有一個“進階”操作,點開,勾選“使用自定義的工作空間”,輸入目錄以及顯示名稱:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

在源碼管理欄目下面選中“Subversion”,然後輸入倉庫位址,輸入可通路倉庫的賬戶密碼:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

建構觸發器欄無操作,直接跳到建構環境tab欄,勾選并設定BuildName:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

這個Build Name主要便于知道你目前在建構一個什麼環境的版本。

在建構tab欄下面選中“Invoke Gradle”,然後選擇之前在系統配置中配置的Gradle Version,接着在 Tasks中輸入建構指令 clean assemble’${PRODUCT_FLAVOR}’’${BUILD_TYPE}’ –stacktrace –debug ,如圖:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

這裡下面也有一個“進階”操作,展開勾選和填寫如下:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

在這一欄最底下,有一個“增加建構步驟”,我們可以通過執行一些腳本,把建構成功後得到的apk備份到指定目錄,或者上傳到蒲公英去生成二維碼等。

點選展開“增加建構步驟”,選擇Execute shell,在編輯框中輸入腳本

copy E:\auto_pkg\Sinfo\build\outputs\apk\*.apk E:\auto_pkg_apks\

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

可以把apk進行備份到另一個目錄;

繼續選擇Execute shell,在編輯框中輸入以下腳本:

# 配置蒲公英

upload_path="E:\\auto_pkg\\Sinfo\\build\\outputs\\apk\\${PRODUCT_FLAVOR}_${BUILD_TYPE}_V${APP_VERSION_NAME}_${BUILD_TIME}.apk"

pgy_userKey="e28e30d******3d767"

pgy_apiKey="b68451******80ba3"

echo "正在上傳apk到蒲公英"

# 上傳APK到蒲公英

curl -F "[email protected]${upload_path}" -F"uKey=${pgy_userKey}" -F "_api_key=${pgy_apiKey}" https://www.pgyer.com/apiv1/app/upload

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

可以把apk上傳到蒲公英去生成二維碼,便于下載下傳安裝。

所有這些完成設定和配置後,記住點選左下角的“應用”(每項配置完成後都可儲存配置),以及“儲存”(應用并儲存所有配置設定)。

三、配置項目裡面的build.gradle腳本

這裡面說的build.gradle是指主Module目錄下的:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

下面主要講這兩個檔案的配置。

build.gradle

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP
Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

gradle.properties:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

build.gradle與gradle.properties中用到的動态參數名稱需要與jenkins裡面的一緻,否則build.gradle隻能取預設值了

最後,build.gradle和gradle.properties也配置完了,送出到SVN倉庫,回到jenkins界面,進入項目AutoPkg的首頁面,點選Build with Parameters

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

則會看到我們最開始展示給大家的效果圖頁面,選擇自己想要建構的值,點選“開始建構”就可以了,這個過程看機器的配置吧可能,我這裡大概需要10分鐘左右可以成功建構完成。

建構完成之後,可以打開蒲公英官網,在我的應用清單相應頁面即可看到剛送出上去的apk安裝包以及二維碼等資訊:

Jenkins+Gradle+AS+SVN持續化內建-Android自動化建構APP

全文完,大家在學習建構過程中如有什麼問題,歡迎交流!

By aceaddi