Jenkins 自動化打包 Android
為什麼
Android
程式設計師常常需要打包給測試進行邏輯和介面測試,在新的專案模組開發中,我司使用了 Scrum敏捷開發;有優點也有缺點,在第一次嘗試過程中,發現測試在最後的環節才參與到開發中,導致專案週期延長了幾天;最後專案總結,提出測試不能參與到開發環節上的原因主要是 開發無法實時提供測試包客戶端開發總是覺得只有當邏輯和介面開發完成之後才能提供完整的測試包,這樣的想法和做法自然是錯誤的,所以就有了今天的主題 Jenkins 自動化打包 Android
怎麼做
當提出一個問題後,應該有大致的解決方法,如果沒有,那就 谷歌 吧~
很長一段時間,網上有很多教程說起jenkins多麼多麼牛,可以釋放你的左右手~ 一直沒有去嘗試,一個是沒有時間,另外一個是沒有實踐的專案
下面開始動手操作吧,需要:
linux伺服器一臺
Git版本控制
JDK安裝
Gradle,並配置環境變數
Android SDK,並配置環境變數
安裝、配置Jenkins
2.1. linux 伺服器
如果需要梯子,可以買國外的伺服器:
不需要可以使用:
等等,當然,如果覺得價格太貴,可以選擇配置虛擬機器來實現;買好伺服器之後,就可以連線了,
值得注意的是, 為了方便後續的操作,需要把伺服器的ssh
##連線伺服器之後輸入該命令
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
配置環境變數在 系統管理->全域性工具配置, 將之前配置的 Git
、 JDK
、Gradle
設定好:
配置環境.png
3.3. 配置專案
3.3.1 配置 General 構建化引數
新增專案之後,進入專案的系統設定:
配置構建化引數.png
首先看到的是 General, 這個是配置我們一些常用見的構建時候配置,多變體打包;多變體打包涉及到資原始檔的設定等,這裡的設定關係到後面的編譯語句,所以要和application
模組中的build.gradle
檔案相同,這樣才能打出我們需要的版本包;這裡給出一個例項:
配置構建化過程引數.png
在上面,我添加了buildType
,這個名稱是隨便填寫的,後面編譯語句需要引用這個欄位,這個引數我添加了debug
、release
兩個打包的版本;然後還添加了一個多變體buildFlavor
引數,選項為xiaomi
、tencent
兩個應用市場的包,所以需要在build.gradle
中設定這兩個市場的資料,怎麼設定請各位自行谷歌~
3.3.2 配置 原始碼管理
現在專案一般都是由Git
來版本控制,同樣的,我們配置原始碼管理的時候選擇用Git
來版本控制:
配置原始碼管理.png
輸入專案url
,認證則需要點選新增按鈕,選擇賬號密碼方式或者ssh祕鑰方式
都是可以的:
新增憑據.png
3.3.3 配置 構建名稱及構建
當我們構建的時候,jenkins
主面板名稱會顯示#1
, #2
, #3
,這樣的構建名稱,顯然不是很友好,這裡構建環境可以設定構建名稱:
配置構建環境.png
配置構建語句:
構建指令碼.png
這裡 clean assemble${buildFlavor}${buildType}
這裡的buildFlavor
、buildType
就是新增的構建引數。
儲存上面的設定之後,進入專案的面板, 選擇Build with Parameters
開始構建:
build開始構建.png
到此,所有的jenkins
配置和構建就結束了。
總結:
- 伺服器的配置
- Android環境的配置
- Jenkins的配置
作者:設計失
連結:https://www.jianshu.com/p/50e3e3fbaff6
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授