Anroid+Jenkins+Maven流水線構(gòu)建

需求背景

????基于多倉庫組件化項(xiàng)目;實(shí)現(xiàn)不同組件的jenkins自動構(gòu)建,構(gòu)建成功后將產(chǎn)物aar文件上傳到maven倉庫統(tǒng)一管理;最終觸發(fā)jenkins構(gòu)建App殼工程。構(gòu)建完成后自動上傳蒲公英內(nèi)測,并通過蒲公英觸發(fā)消息通知到飛書群。

環(huán)境準(zhǔn)備(Mac)

? ? nexus?

?????Download Repository OSS

? ? 下載完成后找個合適的目錄,解壓。打開終端,輸入statrt

? ?nexus啟動后?瀏覽器輸入http://localhost:8081/頁面如下:

? ?啟動成功后,新建一個Maven2倉庫;Type選擇Hosted

? ? 至此Maven搭建結(jié)束。

Android項(xiàng)目增加配置

module(即需要上傳maven倉庫的module)下的build.gradle添加apply plugin: 'maven';build.gradle中添加maven倉庫的關(guān)聯(lián)

uploadArchives {

? ? repositories {

? ? ? ? mavenDeployer{

? ? ? ? ? ? repository(url:"http://127.0.0.1:8081/repository/Maizi/") {

? ? ? ? ? ? ? ? authentication(userName:"admin",password:"xx")}

? ? ? ? ? ? pom.project{

? ? ? ? ? ? ? ? //引用時使用如下格式:implementation 'groupId:artifactId:version'

? ? ? ? ? ? ? ? //版本號,有更新時修改版本號,在上傳

? ? ? ? ? ? ? ? version 1.0

? ? ? ? ? ? ? ? groupId"com.xx.xxx"

? ? ? ? ? ? ? ? pom.artifactId= "home"

? ? ? ? ? ? ? ? //默認(rèn)配置不用修改

? ? ? ? ? ? ? ? packaging"aar"

? ? ? ? ? ? ? ? description "home Module"

? ? ? ? ? ? }

????????}

????}

}

在gradle命令中運(yùn)行

????運(yùn)行success后,可在nexus管理的maven倉庫里找到生成的aar包,以及對應(yīng)的依賴關(guān)系所指向的pom.xml。

? ? 在其他組件引用該aar時要在項(xiàng)目的根build.gradle中添加如下信息

repositories { ...

mavenLocal()

}

allprojects {

repositories { ...

maven { url? ?MAVEN_URL}

????}

}

????至此就可以使用上傳項(xiàng)目中的方法和類。

?Jenkins

? ?Jenkins download and deployment?? ??

? ? 在安裝jenkins之前,我們要先具備jdk和gradle以及Apache(mac自帶)環(huán)境;

????安裝前環(huán)境準(zhǔn)備參考

? ?Jdk1.8:Mac系統(tǒng)安裝JDK1.8及環(huán)境變量配置 - 簡書

? ?GradleMac OS下安裝Gradle - 簡書

? ?下載完成后【不要使用dmg方式安裝jenkins,里面會有大量插件安裝失敗,各種配置問題】,直接運(yùn)行jenkins.war;運(yùn)行成后后如下

????運(yùn)行成功后;‘打開localhost:8080,出現(xiàn)Unlock Jenkins(重設(shè)初始密碼)界面;密碼在/Users/userName/.jenkins/secrets/initialAdminPassword**文件(下圖標(biāo)注紅色路徑)中,打開文件,復(fù)制密碼填到網(wǎng)頁密碼輸入框中,繼續(xù)。

? ? 選擇建議安裝

? ? 等待插件安裝完后;創(chuàng)建管理員賬號及密碼。初始化完成后進(jìn)入jenkins頁面


點(diǎn)擊Manager Jenkins進(jìn)入Manager Plugs檢查關(guān)鍵性插件是否存在

?Git插件: Git plugin;Git Client;Git Parameter Plug-In;

Gitlab插件:GitLab Plugin 和 Gitlab Hook Plugin

Android專用:Gradle plugin

Jenkins系統(tǒng)配置

進(jìn)入Global Tool Configuration

1.新增jdk選擇1.8;

2.新增git

3.新增gradle配置


點(diǎn)擊保存;至此jenkins的一些全局配置完畢。

Jenkins新建自由風(fēng)格項(xiàng)目


點(diǎn)擊項(xiàng)目配置

可在常規(guī)配置選項(xiàng)卡里,新增參數(shù)構(gòu)建,這些參數(shù)將是

在Gradle命令里有assemble_Flavors_Release;所以我們要提前構(gòu)建好幾個常用參數(shù),比如是否release;渠道信息,變體信息,分支信息等。在定于還有我們將在后續(xù)的“構(gòu)建”功能里用到以上參數(shù)。


在新建項(xiàng)目時已經(jīng)配置好的git倉庫信息

日常我們有觸發(fā)jenkins構(gòu)建的需要,例如提交代碼到指定分支時去自動構(gòu)建。此時需要安裝

Generic Webhook Trigger Plugin?插件??梢栽趃itee倉庫配置webhook進(jìn)行觸發(fā)jenkins構(gòu)建;也可以本地url直接觸發(fā)jenkins構(gòu)建。具體的觸發(fā)方式和webhook的使用方式可以參考:jenkins 搭建gitee實(shí)現(xiàn)代碼自動化部署 - 簡書

下面我們進(jìn)行構(gòu)建配置

上傳蒲公英的配置請參考蒲公英官網(wǎng)配置文檔

蒲公英 - 文檔中心 - 使用 Jenkins 插件上傳應(yīng)用到蒲公英

在蒲公英上傳成功后,我們后續(xù)需要執(zhí)行一個shell腳本,把蒲公英返回的信息【下載鏈接,二維碼,更新說明】讀取并通過webhook發(fā)送至企業(yè)微信或者飛書。通知測試人員下載最新的apk文件進(jìn)行測試。

發(fā)送通知腳本如下

#---------------------------------------------------Begin-----------------------------------------------------------------

Webhook=https://open.feishu.cn/open-apis/bot/v2/hook/28e924bc-b971-4ec2-a1b7-72a19512ac17? #機(jī)器人Webhook地址

#----------------------------------------------------END-----------------------------------------------------------------

message=$buildQRCodeURL? #發(fā)送內(nèi)容

content=新版本構(gòu)建成功;二維碼地址為:

curl ${Webhook} \

? -H 'Content-Type: application/json' \

? -d '

? {

? ? ? ? "msg_type": "text",

? ? ? ? "content": {

? ? ? ? ? "text": "'$content$message'"

? ? ? ? }

? }'

以上為”構(gòu)建“tab的配置

下面我們將配置構(gòu)建成功后的操作,一般來時構(gòu)建成功后就是保存構(gòu)建的產(chǎn)物文件。


點(diǎn)擊保存。

配置完成后,jenkins項(xiàng)目如下


開發(fā)者可手動選擇參數(shù),指定分支;然后開始構(gòu)建。也可以通過鉤子進(jìn)行遠(yuǎn)程觸發(fā)構(gòu)建。

在構(gòu)建完成后,會將產(chǎn)物自動上傳至蒲公英,并根據(jù)蒲公英平臺返回的json。在做消息組裝和通知;當(dāng)然也可以配置發(fā)送郵件通知協(xié)作或測試人員。配置郵箱的通知,這個留作和人作業(yè)把。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容