jenkins:實(shí)現(xiàn)安卓app自動(dòng)打包

本文為原創(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ù),如下圖:

Gradle配置

6积蔚、新建一個(gè)自由風(fēng)格的job

1)參數(shù)化構(gòu)建

因?yàn)槭潜容^簡(jiǎn)單的配置意鲸,只有一個(gè)打包類型的參數(shù)

構(gòu)建參數(shù)配置

2)配置git源碼管理

git源碼配置

3)默認(rèn)的構(gòu)建名稱是顯構(gòu)建編號(hào),有時(shí)候?yàn)榱朔奖悴榭纯馓龋M@示自定義的名稱

在構(gòu)建環(huán)境中勾選Set Build Name临扮,并設(shè)置

自定義構(gòu)建名稱

4)增加構(gòu)建步驟Invoke Gradle script—選擇配置好的Gradle Version—在Tasks中輸入Gradle命令—把下面的Pass jod parameters as Gradle properties勾上—Root Build script 根據(jù)實(shí)際配置工程的路徑

增加構(gòu)建步驟

至此,保存 job 的配置教翩,通過參數(shù)構(gòu)建杆勇,能打包成功(如果沒有成功,就需要檢查哪里出問題了)

7饱亿、上傳到蒲公英

在上傳到蒲公英平臺(tái)前蚜退,需要在蒲公英上注冊(cè)一個(gè)賬號(hào)并通過實(shí)名認(rèn)證闰靴,拿到API信息,并參考官方文檔:https://www.pgyer.com/doc/view/jenkins

蒲公英API信息

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)建

定時(shí)構(gòu)建
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市麻掸,隨后出現(xiàn)的幾起案子酥夭,更是在濱河造成了極大的恐慌,老刑警劉巖脊奋,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熬北,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡狂魔,警方通過查閱死者的電腦和手機(jī)蒜埋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來最楷,“玉大人整份,你說我怎么就攤上這事∽阉铮” “怎么了烈评?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)犯建。 經(jīng)常有香客問我讲冠,道長(zhǎng),這世上最難降的妖魔是什么适瓦? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任竿开,我火速辦了婚禮,結(jié)果婚禮上玻熙,老公的妹妹穿的比我還像新娘否彩。我一直安慰自己,他們只是感情好嗦随,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布列荔。 她就那樣靜靜地躺著,像睡著了一般枚尼。 火紅的嫁衣襯著肌膚如雪贴浙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天署恍,我揣著相機(jī)與錄音崎溃,去河邊找鬼。 笑死锭汛,一個(gè)胖子當(dāng)著我的面吹牛笨奠,可吹牛的內(nèi)容都是我干的袭蝗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼般婆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼到腥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蔚袍,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乡范,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后啤咽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晋辆,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年宇整,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓶佳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鳞青,死狀恐怖霸饲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情臂拓,我是刑警寧澤厚脉,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站胶惰,受9級(jí)特大地震影響傻工,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜孵滞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一中捆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坊饶,春花似錦轨香、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)科雳。三九已至根蟹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間糟秘,已是汗流浹背简逮。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尿赚,地道東北人散庶。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓蕉堰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親悲龟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子屋讶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容