在Android开发实践中,充分利用jenkins自动化集成和交付能力,设计了一套完整高效的jenkins应用系统,覆盖了开发,测试,交付等阶段。
该系统针对不同阶段实现了特点的功能,整体又是一套闭环的系统,最终的目的,都是位了提高交付效率和质量。
开发阶段
开发阶段主要围绕QDepend插件来设计,主要的思想是将依赖产物统一通过maven来维护依赖关系,这样可以方便维护,同时能充分利用maven处理递归依赖冲突的策略。
- ModuleToMaven
- Aar/JarToMaven
ModuleToMaven:配合QDepend,对应Android Studio工程中的子module,将其封装成aar并提交到nexus上。
Aar/JarToMaven:针对工程中的lib依赖的aar/jar文件,这些依赖包一般是三方服务必要的依赖包,通过改jobs,可以提交到自己的仓库中管理,并指定版本号。
测试阶段
- Test
- Performance
Test:通过了支持环境和分支参数配置,供QA在各种条件下打包,覆盖了整个提测阶段,该jobs仅提供测使用。
Performance:完整的编译工程,类似生产环境,添加了sonar代码检测和ApkChecker的信息检测,其检测结果给开发提供了优化安装包和代码质量的参考数据,同时可以让QA参与推动问题修复,达到提高交付质量的目的。
交付阶段
- Market
- Channel
- Patch
Market:会生成最终发布到应用市场的apk,提供各个渠道号的包,同时会对基准包进行备份(签名未添加渠道号),生成一个baseId保存到打包机上。
Channel:可以根据提供的base包生成对应的渠道包,因为高效使用的前提下不会对每次的Market包进行全量备份,因此在遇到需要扩充渠道或需要老版本的渠道包时,就可以通过Channel快速的生成
Patch: 在生产环境遇到线上bug时,需要紧急补丁,通过通过对应的baseId,Pacth可以快速的提供补丁包,Patch对Tinker和Sophix两种工程做了不同实现。