1. 程式人生 > >Jenkins 自動化打包 Android

Jenkins 自動化打包 Android

為什麼

Android程式設計師常常需要打包給測試進行邏輯和介面測試,在新的專案模組開發中,我司使用了 Scrum敏捷開發;有優點也有缺點,在第一次嘗試過程中,發現測試在最後的環節才參與到開發中,導致專案週期延長了幾天;最後專案總結,提出測試不能參與到開發環節上的原因主要是 開發無法實時提供測試包

客戶端開發總是覺得只有當邏輯和介面開發完成之後才能提供完整的測試包,這樣的想法和做法自然是錯誤的,所以就有了今天的主題 Jenkins 自動化打包 Android

怎麼做

當提出一個問題後,應該有大致的解決方法,如果沒有,那就 谷歌 吧~

很長一段時間,網上有很多教程說起jenkins多麼多麼牛,可以釋放你的左右手~ 一直沒有去嘗試,一個是沒有時間,另外一個是沒有實踐的專案

下面開始動手操作吧,需要:

  • linux伺服器一臺
  • Git版本控制
  • JDK安裝
  • Gradle,並配置環境變數
  • Android SDK,並配置環境變數
  • 安裝、配置Jenkins

2.1. linux 伺服器

如果需要梯子,可以買國外的伺服器:

不需要可以使用:

等等,當然,如果覺得價格太貴,可以選擇配置虛擬機器來實現;買好伺服器之後,就可以連線了,

  • windows使用者可以使用 XShell, 其中還包含xftp
  • mac使用者可以直接使用終端來連線伺服器

值得注意的是, 為了方便後續的操作,需要把伺服器的ssh

的埠修改為 22(如果預設埠不是22):

##連線伺服器之後輸入該命令
vi /etc/ssh/sshd_config

滑動到最後,修改port為22

伺服器修改埠

 

2.2.Git 版本控制

yum install git

檢視git版本:

檢視Git版本.png

 

2.3. JDK安裝

由於官網的jdk下載需要接受協議,所以只能下載到本地之後上傳到伺服器;

scp 本地檔案 root@伺服器地址:/路徑

拷貝檔案到伺服器.png

解壓:

tar -zxvf jdk.tar.gz

配置環境變數:

vi /etc/profile

加入如下程式碼:

export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

source /etc/profile ## 使得更改生效

 

配置jdk環境變數.png

2.4. Gradle 安裝

Gradle版本儘量和專案中使用的版本一致,不要引起不必要的錯誤;我專案中使用的版本是4.10.1,所以下載對應的版本:

wget https://downloads.gradle.org/distributions/gradle-4.10.1-all.zip

這樣是直接下載到你當前所在的目錄的,可以移動到某一個特定的目錄,接下來就是解壓:

unzip gradle-5.0-all.zip

如果沒有該命令則說明沒有安裝 zip unzip, 使用 yum install zip unzip安裝即可
解壓之後開啟/etc/profile檔案,配置和jdk類似的環境變數:

配置gradle.png


我的gradle放到了 /usr/ellison/目錄下

 

source /etc/profile ## 使得更改生效

2.5. SDK 安裝

sdk下載到本地,使用上面同樣的方式上傳到伺服器,Android SDK 下載地址,選擇 Download Options 找到Command line tools only:

sdk下載地址.png

 

然後將檔案上傳到伺服器,這裡不再贅述; 接著配置sdk環境變數

vi /etc/profile

配置sdk環境變數.png

上面我是將檔案放到了 /opt/androidSDK目錄下,各位可以隨便放到伺服器哪個目錄都可以,只需配置環境變數 然後使得生效即可:

source /etc/profile

配置好sdk環境變數之後,輸入sdkmanager命令就可以來獲取到sdk版本以及build-tools版本了;輸入sdkmanager --list命令來獲取所有的資訊:

獲取build-tools版本.png

 

可以看到最新的 build-tools版本是29.0.0-rc1, 可以根據專案中使用的build-tools版本來下載,我這邊使用的是28.0.3; 下載命令為:

sdkmanager "build-tools;28.0.3"

安裝好 build-tools之後,還需要安裝必須的sdk版本,同樣的也是根據專案中使用的下載需要的sdk:

獲取所有的sdk版本.png

 

sdkmanaager "system-images;android-28;default;x86_64"

等待下載完成後,sdk就安裝完了; 到此所有的 Android環境就安裝完了。接下來就是jenkins安裝了

3.1. Jenkins 安裝

wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo
rpm –import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
yum install jenkins

安裝的時候在國內會出現公鑰未安裝的情況,yum install --nogpgcheck 取消驗證即可。

安裝完之後,還不能啟動 jenkins,因為jenkins預設的配置並不能找到你本機的jdk配置,開啟jenkins的配置檔案:

vim /etc/init.d/jenkins

找到如下位置之後,修改java檔案的位置,即為本機安裝的jdk環境位置:

修改jenkins啟動.png

 

接下來就可以啟動jenkins了:

sudo service jenkins start

啟動jenkins

sudo service jenkins stop

停止jenkins

3.2. 啟動Jenkins 建立新任務

啟動jenkins之後,在瀏覽器上面輸入<ip地址>:8080就可以開啟jenkins主頁,進入第一個頁面會讓輸入初始密碼:

cat <瀏覽器上提示的目錄地址>

獲取密碼之後輸入登入建立一個新任務:

jenkins建立新任務.png


輸入任務的名稱,選擇 構建一個自由風格的軟體專案 ,點選 確定 即建立了一個新的任務,正常情況下,會選擇外掛安裝,筆者使用國外的伺服器安裝的時候一路暢通提示安裝外掛,但是國內的伺服器卻提示 jenkins伺服器已經離線 ,如果出現這種問題,則需要在瀏覽器上輸入如下地址進行修改:

 

http://<伺服器IP地址>:8080/pluginManager/advanced , 找到 升級站點 ,將url中的 https修改為http, 這樣就能正常安裝需要的外掛了:

修改jenkins已經離線.png

 

3.3. 配置jenkins全域性環境

安裝完外掛之後,就來到了jenkins主面板

jenkins主面板.png


配置環境變數在 系統管理->全域性工具配置, 將之前配置的 GitJDKGradle設定好:

配置環境.png

 

3.3. 配置專案

3.3.1 配置 General 構建化引數

新增專案之後,進入專案的系統設定:

 

配置構建化引數.png

首先看到的是 General, 這個是配置我們一些常用見的構建時候配置,多變體打包;多變體打包涉及到資原始檔的設定等,這裡的設定關係到後面的編譯語句,所以要和application模組中的build.gradle檔案相同,這樣才能打出我們需要的版本包;這裡給出一個例項:

配置構建化過程引數.png

 

在上面,我添加了buildType,這個名稱是隨便填寫的,後面編譯語句需要引用這個欄位,這個引數我添加了debugrelease兩個打包的版本;然後還添加了一個多變體buildFlavor引數,選項為xiaomitencent兩個應用市場的包,所以需要在build.gradle中設定這兩個市場的資料,怎麼設定請各位自行谷歌~

3.3.2 配置 原始碼管理

現在專案一般都是由Git來版本控制,同樣的,我們配置原始碼管理的時候選擇用Git來版本控制:

配置原始碼管理.png


輸入專案url,認證則需要點選新增按鈕,選擇賬號密碼方式或者ssh祕鑰方式都是可以的:

新增憑據.png

 

3.3.3 配置 構建名稱及構建

當我們構建的時候,jenkins主面板名稱會顯示#1, #2, #3,這樣的構建名稱,顯然不是很友好,這裡構建環境可以設定構建名稱:

配置構建環境.png


配置構建語句:

構建指令碼.png


這裡 clean assemble${buildFlavor}${buildType} 這裡的buildFlavorbuildType就是新增的構建引數。

 

儲存上面的設定之後,進入專案的面板, 選擇Build with Parameters開始構建:

build開始構建.png

 

到此,所有的jenkins配置和構建就結束了。

總結:

  1. 伺服器的配置
  2. Android環境的配置
  3. Jenkins的配置



作者:設計失
連結:https://www.jianshu.com/p/50e3e3fbaff6
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授