
需求背景
????基于多倉庫組件化項(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?
? ? 下載完成后找個合適的目錄,解壓。打開終端,輸入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)境變量配置 - 簡書
? ?Gradle:Mac 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è)把。