需求背景
????基于多倉庫組件化項目繁疤;實現(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)境準備(Mac)
? ? nexus?
? ? 下載完成后找個合適的目錄架忌,解壓。打開終端我衬,輸入statrt
? ?nexus啟動后?瀏覽器輸入http://localhost:8081/頁面如下:
? ?啟動成功后叹放,新建一個Maven2倉庫;Type選擇Hosted
? ? 至此Maven搭建結(jié)束挠羔。
Android項目增加配置
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"
? ? ? ? ? ? ? ? //默認配置不用修改
? ? ? ? ? ? ? ? packaging"aar"
? ? ? ? ? ? ? ? description "home Module"
? ? ? ? ? ? }
????????}
????}
}
在gradle命令中運行
????運行success后俱恶,可在nexus管理的maven倉庫里找到生成的aar包,以及對應(yīng)的依賴關(guān)系所指向的pom.xml范舀。
? ? 在其他組件引用該aar時要在項目的根build.gradle中添加如下信息
repositories { ...
mavenLocal()
}
allprojects {
repositories { ...
maven { url? ?MAVEN_URL}
????}
}
????至此就可以使用上傳項目中的方法和類速那。
?Jenkins
? ?Jenkins download and deployment?? ??
? ? 在安裝jenkins之前,我們要先具備jdk和gradle以及Apache(mac自帶)環(huán)境;
????安裝前環(huán)境準備參考
? ?Jdk1.8:Mac系統(tǒng)安裝JDK1.8及環(huán)境變量配置 - 簡書
? ?Gradle:Mac OS下安裝Gradle - 簡書
? ?下載完成后【不要使用dmg方式安裝jenkins尿背,里面會有大量插件安裝失敗,各種配置問題】捶惜,直接運行jenkins.war田藐;運行成后后如下
????運行成功后;‘打開localhost:8080吱七,出現(xiàn)Unlock Jenkins(重設(shè)初始密碼)界面汽久;密碼在/Users/userName/.jenkins/secrets/initialAdminPassword**文件(下圖標注紅色路徑)中,打開文件景醇,復(fù)制密碼填到網(wǎng)頁密碼輸入框中三痰,繼續(xù)稚机。
? ? 選擇建議安裝
? ? 等待插件安裝完后充蓝;創(chuàng)建管理員賬號及密碼纬乍。初始化完成后進入jenkins頁面
點擊Manager Jenkins進入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)配置
進入Global Tool Configuration
1.新增jdk選擇1.8干毅;
2.新增git
3.新增gradle配置
點擊保存;至此jenkins的一些全局配置完畢叫乌。
Jenkins新建自由風格項目
點擊項目配置
可在常規(guī)配置選項卡里排宰,新增參數(shù)構(gòu)建国觉,這些參數(shù)將是
在Gradle命令里有assemble_Flavors_Release傲醉;所以我們要提前構(gòu)建好幾個常用參數(shù)呻引,比如是否release;渠道信息童谒,變體信息,分支信息等。在定于還有我們將在后續(xù)的“構(gòu)建”功能里用到以上參數(shù)。
在新建項目時已經(jīng)配置好的git倉庫信息
日常我們有觸發(fā)jenkins構(gòu)建的需要,例如提交代碼到指定分支時去自動構(gòu)建饱苟。此時需要安裝
Generic Webhook Trigger Plugin?插件类垦。可以在gitee倉庫配置webhook進行觸發(fā)jenkins構(gòu)建;也可以本地url直接觸發(fā)jenkins構(gòu)建。具體的觸發(fā)方式和webhook的使用方式可以參考:jenkins 搭建gitee實現(xiàn)代碼自動化部署 - 簡書
下面我們進行構(gòu)建配置
上傳蒲公英的配置請參考蒲公英官網(wǎng)配置文檔
蒲公英 - 文檔中心 - 使用 Jenkins 插件上傳應(yīng)用到蒲公英
在蒲公英上傳成功后澳骤,我們后續(xù)需要執(zhí)行一個shell腳本为肮,把蒲公英返回的信息【下載鏈接籽暇,二維碼舟山,更新說明】讀取并通過webhook發(fā)送至企業(yè)微信或者飛書。通知測試人員下載最新的apk文件進行測試累盗。
發(fā)送通知腳本如下
#---------------------------------------------------Begin-----------------------------------------------------------------
Webhook=https://open.feishu.cn/open-apis/bot/v2/hook/28e924bc-b971-4ec2-a1b7-72a19512ac17? #機器人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)物文件若债。
點擊保存符相。
配置完成后,jenkins項目如下
開發(fā)者可手動選擇參數(shù),指定分支啊终;然后開始構(gòu)建镜豹。也可以通過鉤子進行遠程觸發(fā)構(gòu)建。
在構(gòu)建完成后蓝牲,會將產(chǎn)物自動上傳至蒲公英趟脂,并根據(jù)蒲公英平臺返回的json。在做消息組裝和通知例衍;當然也可以配置發(fā)送郵件通知協(xié)作或測試人員昔期。配置郵箱的通知,這個留作和人作業(yè)把肄渗。