CI/CD在业界有很多成功实施的案例,CI/CD的精髓在于研发人员通过工具在质量、过程受控的情况下可以频繁的向用户交付需求。
目前业界有很多CI/CD工具可以使用,持续交付基金会(CDF)是Linux基金会下面的一个子基金会,旨在以厂商中立的身份推动CI/CD的发展。目前CDF推荐使用的相关工具是JenkinsX、Spinnaker、Tekton Pipelines、Screwdriver。除此之外,Jenkins、Gitlab CICD、GoCD、ArgoCD等等也是较为常见的选择。
如同大多数公司一样,早期没有进行CI/CD建设时,不同产品线之间的技术差异性非常大,甚至编译、部署方式完全不同,上线失败率非常高。初始阶段,我们采用Jenkins进行CI/CD构建,但在实际过程中逐渐发现开源类的产品或多或少都存在一些问题。例如配置变更、操作审批、发布策略、流量控制等方面,开源产品都缺少相应的功能,基本都停留在能用但不好用的阶段。我们逐步认识到真正需要的是一个All In One的平台,而非各个开源产品的简单堆砌,为此开发了一个名为「DevCloud」的定制系统,对CI/CD过程提供完备的支持。
在这个平台上,可以实现这些功能:
- 编译流程标准化,预定义一些Pipeline模版,模版中预定义好代码质量扫描、安全扫描、自动化测试等强制执行过程,系统只能利用预定义的模版进行构建,强制实现规范落地。
- 灰度发布,系统上集成了Istio实现灰度发布功能。
- 组件依赖管理,在编译过程中分析系统的外部组件依赖关系并记录下来,可以方便的查看组件与服务的映射关系,方便的进行依赖管理。
- 配置管理。
- 操作审批。
构建过程