在Android開發(fā)實踐中券勺,充分利用jenkins自動化集成和交付能力,設(shè)計了一套完整高效的jenkins應(yīng)用系統(tǒng)松申,覆蓋了開發(fā)云芦,測試,交付等階段贸桶。
該系統(tǒng)針對不同階段實現(xiàn)了特點的功能舅逸,整體又是一套閉環(huán)的系統(tǒng),最終的目的皇筛,都是位了提高交付效率和質(zhì)量琉历。
開發(fā)階段
開發(fā)階段主要圍繞QDepend插件來設(shè)計,主要的思想是將依賴產(chǎn)物統(tǒng)一通過maven來維護依賴關(guān)系水醋,這樣可以方便維護旗笔,同時能充分利用maven處理遞歸依賴沖突的策略。
- ModuleToMaven
- Aar/JarToMaven
ModuleToMaven:配合QDepend拄踪,對應(yīng)Android Studio工程中的子module蝇恶,將其封裝成aar并提交到nexus上。
Aar/JarToMaven:針對工程中的lib依賴的aar/jar文件宫蛆,這些依賴包一般是三方服務(wù)必要的依賴包艘包,通過改jobs,可以提交到自己的倉庫中管理耀盗,并指定版本號想虎。
測試階段
- Test
- Performance
Test:通過了支持環(huán)境和分支參數(shù)配置,供QA在各種條件下打包叛拷,覆蓋了整個提測階段舌厨,該jobs僅提供測使用。
Performance:完整的編譯工程忿薇,類似生產(chǎn)環(huán)境裙椭,添加了sonar代碼檢測和ApkChecker的信息檢測,其檢測結(jié)果給開發(fā)提供了優(yōu)化安裝包和代碼質(zhì)量的參考數(shù)據(jù)署浩,同時可以讓QA參與推動問題修復(fù)揉燃,達到提高交付質(zhì)量的目的。
交付階段
- Market
- Channel
- Patch
Market:會生成最終發(fā)布到應(yīng)用市場的apk筋栋,提供各個渠道號的包炊汤,同時會對基準包進行備份(簽名未添加渠道號),生成一個baseId保存到打包機上。
Channel:可以根據(jù)提供的base包生成對應(yīng)的渠道包抢腐,因為高效使用的前提下不會對每次的Market包進行全量備份姑曙,因此在遇到需要擴充渠道或需要老版本的渠道包時,就可以通過Channel快速的生成
Patch: 在生產(chǎn)環(huán)境遇到線上bug時迈倍,需要緊急補丁伤靠,通過通過對應(yīng)的baseId,Pacth可以快速的提供補丁包啼染,Patch對Tinker和Sophix兩種工程做了不同實現(xiàn)宴合。