本文為原創(chuàng)块茁,碼字不易佣渴,轉(zhuǎn)載請(qǐng)注明辫狼,謝謝!
目的:
1辛润、用jenkins拉取git的代碼膨处,實(shí)現(xiàn)安卓的自動(dòng)打包
2、將生成的apk上傳到蒲公英平臺(tái)
3、將蒲公英返回的二維碼地址在jenkins上展示
效果如下:
環(huán)境:Linux
步驟:
1真椿、搭建jenkins環(huán)境(這個(gè)有現(xiàn)成的鹃答,包括JDK和Git的配置,略過)
2瀑粥、android 開發(fā)環(huán)境(因?yàn)閷?duì)于安卓開發(fā)環(huán)境不是很熟悉挣跋,整個(gè)過程中,這個(gè)耗時(shí)最多)
1)下載安卓SDK狞换,并解壓:
# cd /XXX
# wget?http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
# tar zxvf android-sdk_r24.4.1-linux.tgz
解壓后避咆,android sdk所在目錄為 /XXX/android-sdk-linux
2)配置android sdk 環(huán)境 變量
# vim /etc/profile
在文件末尾添加:
export ANDROID_HOME=/XXX/android-sdk-linux'
export PATH=$ANDROID_HOME/tools:$PATH
保存
# source /etc/profile
3)接下來需要下載相關(guān)的包,一開始我是不知道的修噪,在jenkins構(gòu)建的時(shí)候會(huì)報(bào)相應(yīng)的錯(cuò)誤查库,在一次次的試錯(cuò)之后,終于齊全了(在此非常感謝開發(fā)帥哥)
錯(cuò)誤信息大概如下:
*What went wrong:
A problem occurred configuring project ':XXX'.
>You have not accepted the license agreements of the following SDK compoents:
[Android SDK Platform XX......]
解決辦法參照:http://www.reibang.com/p/4d980fc806dd
獲取可安裝的組件列表
# android list sdk
缺什么安裝什么
# android update sdk --no-ui --filter[list中的id]
(也可全部安裝黄琼,但我嫌太多了樊销,有些沒用到的就沒必要下載了)
在這個(gè)過程中還遇到一個(gè)問題,開發(fā)的打包配置文件中build-tools是25.0.1的版本脏款,以上list顯示的是最新的27.0.1的版本围苫,需要手動(dòng)下載25.0.1的版本,通過度娘找到了一個(gè)神奇的地址撤师,果斷mark:http://mirrors.neusoft.edu.cn/android/repository/
3剂府、安裝Gradle
1)下載Gradle并解壓
# wget https://services.gradle.org/distributions/gradle-4.3-bin.zip
# unzip gradle-4.3-bin.zip
在此又mark一個(gè)地址:http://services.gradle.org/distributions/
2)配置Gradle環(huán)境變量
# vim /etc/profile
添加:
export GRADLE_HOME=/XXX/gradle-4.3
export PATH=$PATH:$GRADLE_HOME/bin
# source /etc/profile
4、jenkins安裝相關(guān)插件(網(wǎng)上的資料顯示要下載很多剃盾,由于沒有添加很多的參數(shù)腺占,此處根據(jù)實(shí)際需要只安裝了部分):
Git plugin? ------用于從git獲取代碼
Gradle Plugin ------用于app打包
description setter plugin ------用于展示二維碼
5、jenkins全局工具配置
進(jìn)入 【Jenkins-全局工具配置】頁(yè)面痒谴,配置好Git衰伯、Gradle的參數(shù),如下圖:
6积蔚、新建一個(gè)自由風(fēng)格的job
1)參數(shù)化構(gòu)建
因?yàn)槭潜容^簡(jiǎn)單的配置意鲸,只有一個(gè)打包類型的參數(shù)
2)配置git源碼管理
3)默認(rèn)的構(gòu)建名稱是顯構(gòu)建編號(hào),有時(shí)候?yàn)榱朔奖悴榭纯馓龋M@示自定義的名稱
在構(gòu)建環(huán)境中勾選Set Build Name临扮,并設(shè)置
4)增加構(gòu)建步驟Invoke Gradle script—選擇配置好的Gradle Version—在Tasks中輸入Gradle命令—把下面的Pass jod parameters as Gradle properties勾上—Root Build script 根據(jù)實(shí)際配置工程的路徑
至此,保存 job 的配置教翩,通過參數(shù)構(gòu)建杆勇,能打包成功(如果沒有成功,就需要檢查哪里出問題了)
7饱亿、上傳到蒲公英
在上傳到蒲公英平臺(tái)前蚜退,需要在蒲公英上注冊(cè)一個(gè)賬號(hào)并通過實(shí)名認(rèn)證闰靴,拿到API信息,并參考官方文檔:https://www.pgyer.com/doc/view/jenkins
Jenkins上添加構(gòu)建步驟 Execute shell 钻注,上傳的命令是:
curl -F "file=@app-${BUILD_TYPE}.apk" -F "uKey=XXX" -F "_api_key=XXX" https://www.pgyer.com/apiv1/app/upload
注:file 后面為apk的名稱(根據(jù)實(shí)際指定路徑)蚂且,“@”不可少;uKey為蒲公英上顯示的User Key幅恋;_api_key為蒲公英上顯示的API Key
重新構(gòu)建了一次杏死,成功了,從控制臺(tái)輸出中能看到蒲公英返回的二維碼地址(是長(zhǎng)地址哦~~~)
注:網(wǎng)上的參考資料顯示捆交,蒲公英返回的信息中只有二維碼的短地址淑翼,沒有二維碼的長(zhǎng)地址,與實(shí)際有出入
8品追、展示蒲公英返回的二維碼圖片
在前面的步驟中玄括,已經(jīng)能拿到二維碼下載的長(zhǎng)地址了,通過正則把地址取出來就行了肉瓦,這個(gè)就需要仰仗Set build description這個(gè)插件了遭京。
在配置之前,需要修改下Jenkins的安全配置:系統(tǒng)管理->Configure Global Security泞莉,將 Markup Formatter 更改為“Safe HTML”哪雕。
增加構(gòu)建后的步驟,選擇Set build description鲫趁,Regular expression 中輸入正則表達(dá)式热监,Description中采用HTML的 img 和 a 標(biāo)簽插入圖片和鏈接文字。
在這里遇到了一個(gè)小插曲饮寞,二維碼地址中有“\”,直接復(fù)制地址到瀏覽器中訪問是沒有問題的列吼,我以為直接copy到HTML里面也是可能的幽崩,然后正則寫的是匹配“appQRCodeURL”后面的字符串,構(gòu)建后發(fā)現(xiàn)顯示的地址是這樣:
想到只要在正則里面過濾掉“\”就可以了寞钥,然而現(xiàn)實(shí)是我不會(huì)過濾~~
不會(huì);派辍!
笨人有笨辦法理郑,觀察了url蹄溉,發(fā)現(xiàn)變的只是qrcodeHistory后面那一串,把那一串取出來您炉,手動(dòng)拼上前面的不就可以了柒爵?迫不及待試了下,成功了(內(nèi)心無(wú)限喜悅)
注:在Description中通過 “\1”這種形式來引用正則匹配的結(jié)果
9赚爵、自動(dòng)構(gòu)建
本來是想實(shí)現(xiàn)開發(fā)提交代碼到指定的分支就自動(dòng)構(gòu)建棉胀,但代碼在coding上法瑟,jenkins是內(nèi)網(wǎng)環(huán)境,外網(wǎng)訪問不到唁奢,也就放棄了霎挟,改用定時(shí)構(gòu)建