构建系统是研发效能工具链中的重要一环。在滴滴,开发同学们只需将构建脚本同源到代码库中,远在云端的构建系统就可以随时进行高效稳定的构建打包作业,同时完成多OS并行构建打包、服务注册与发现信息扫描、依赖关系收集分析、自动推送产出物管理中心等工作。当需要自定义构建环境时,只需提供一个容器镜像地址即可。如果是使用构建系统预置的数十套环境,更是简单到在构建环境配置文件中改动一行代码就能完成构建环境切换:
做到这一切的背后正是滴滴构建系统从开源方案走向自研系统的发展过程。滴滴初期通过Jenkins来帮助开发团队完成构建打包工作,使用规范的构建环境打包,保证产出包的环境和线上环境一致。
Jenkins作为一款优秀的开源工具,具有如下优点:
简单易用:能够快速创建并运行自己的构建、测试等任务。
功能强大:目前已经存在众多插件,可以通过插件实现很多扩展功能。
社区活跃:版本更新很快,对容器等新技术的支持速度也很快。
然而仅就构建过程来说,我们在实际使用中也发现了以下问题:
稳定性问题: Jenkins只有一个Master,存在单点风险,会成为一个S