对CI、CD的理解记录

Last Updated on 2024-05-14 by likun.gong

近期又接触了阿里云 flow 这个工具,发现自己对 CI、CD 这块一直没有比较成型的记忆,所以简单整理记录一下。

CI CD是什么

CI:持续集成,开发人员在每次更改代码后都会将代码提交到版本控制系统。然后,CI 服务器会自动构建、测试和验证代码。

CD:持续交付/部署,持续部署到服务器中。

CI、CD 的整个过程都是围绕着自动化产生的,力求做到更快、更可靠的交付。

制品

制品可以理解是 CI 的产物,它可以是一个 Jar 包、一个 Docker 镜像、一个二进制文件。

制品是连接 CI 、CD 的传动轴。

制品不应该是死的,应该给它赋予 元数据,这些元数据可以标识制品是否被测试过、是否符合上线的标准,从而定义好 制品的生命周期。Jfrog Artifactory 很好的体现了这一点,而 Nexus 只是单纯的存储仓库,想要做到元数据,还需要额外的系统进行配合。

制品生命周期:

  1. 开发阶段,对应 dev 仓库,保留最近15天的数据
  2. 测试阶段,对应 test 仓库,保留最近15天的数据
  3. 预发布阶段,对应 stage 仓库,制品永久保留
  4. 正式发布,对应 release 仓库,制品应该是从 stage 仓库 Promete 提升上来的,也需要永久保留

如何设计CI CD流水线

目前主要接触过 2 种设计:

  1. CI、CD 所有功能都集中在一条 pipeline 中。这种方法适用于 pipeline 不复杂的情况,能够一步到位,完成所有事情。
  2. CI、CD 分两条不同的 pipeline,各自负责相应的事情。通过制品使 CI、CD 关联起来,分开的 CI、CD 相对更加灵活,权限管控更加方便。

串行和并行:例如代码扫描和编译和并行执行,提升效率

在核心的功能之外,我们应该引入单元测试、自动化集成测试、代码扫描等功能,来保证制品的质量。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注