在Android開發(fā)實(shí)踐中,充分利用jenkins自動化集成和交付能力,設(shè)計(jì)了一套完整高效的jenkins應(yīng)用系統(tǒng),覆蓋了開發(fā),測試,交付等階段。

該系統(tǒng)針對不同階段實(shí)現(xiàn)了特點(diǎn)的功能,整體又是一套閉環(huán)的系統(tǒng),最終的目的,都是位了提高交付效率和質(zhì)量。
開發(fā)階段
開發(fā)階段主要圍繞QDepend插件來設(shè)計(jì),主要的思想是將依賴產(chǎn)物統(tǒng)一通過maven來維護(hù)依賴關(guān)系,這樣可以方便維護(hù),同時(shí)能充分利用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ù),同時(shí)可以讓QA參與推動問題修復(fù),達(dá)到提高交付質(zhì)量的目的。
交付階段
- Market
- Channel
- Patch
Market:會生成最終發(fā)布到應(yīng)用市場的apk,提供各個渠道號的包,同時(shí)會對基準(zhǔn)包進(jìn)行備份(簽名未添加渠道號),生成一個baseId保存到打包機(jī)上。
Channel:可以根據(jù)提供的base包生成對應(yīng)的渠道包,因?yàn)楦咝褂玫那疤嵯虏粫γ看蔚腗arket包進(jìn)行全量備份,因此在遇到需要擴(kuò)充渠道或需要老版本的渠道包時(shí),就可以通過Channel快速的生成
Patch: 在生產(chǎn)環(huán)境遇到線上bug時(shí),需要緊急補(bǔ)丁,通過通過對應(yīng)的baseId,Pacth可以快速的提供補(bǔ)丁包,Patch對Tinker和Sophix兩種工程做了不同實(shí)現(xiàn)。