about blog github

23 Oct 2023
ci/cd工作流

工作中一直使用ci/cd自动测试和集成部署,所以想花点时间记录下ci/cd的工作流,权当梳理下知识点。

  • 持续集成 (ci):开发人员会频繁地将代码更改合并到主分支。每次合并都伴随着自动化测试,确保代码的质量和稳定性。
  • 持续部署 (cd):代码通过所有测试后,它会被自动部署到生产环境,使得新特性、修复等更快地达到用户手中。

大致的ci/cd工作流如下:

  • 开发人员从主分支创建自己的开发分支,然后在自己的开发分支上进行功能开发或bug修复,每次提交都会触发一些自动化测试比如单元测试,代码扫描等等,确保代码的质量和稳定性
  • 完成开发后,开发需要创建pr,等待一系列的检查和测试
  • pr创建后,ci/cd的自动化流程开始。例如,jenkins这样的工具会拉取新的更改并准备进行一系列的检查和测试
  • 使用工具如sonarqube进行代码的静态分析,确保代码的质量满足团队的标准
  • 运行单元测试,确保代码的每一个部分都按预期工作
  • 代码静态分析,进一步确保代码的健壮性,查找潜在的错误或不良实践
  • 安全扫描,使用工具来检测代码中的安全隐患,如依赖漏洞扫描,镜像漏洞扫描等
  • 构建应用镜像,并使用镜像进行本地e2e测试和集成测试,确保没有break之前的功能
  • 如果其中某个流程失败,比如单元测试失败,发现安全隐患等等,需要开发人员再次修改提交代码,继续之前的流程
  • 当上述流程都成功后,才会让其他同事帮忙review代码,如果review有问题,开发需要修改代码,继续之前的流程
  • 当review都通过过,代码将被合并到主分支,我们一般需要2个人review并且批准才能合并到主分支
  • 代码合并到主分支后,自动构建镜像并进行全面的测试,如单元测试、e2e测试、canary测试、集成测试、性能测试等等一系列的测试
  • 当所有的测试和检查都没有问题后,将镜像push到镜像仓库
  • 最后将镜像部署到k8s集群,完成应用部署


LEo at 00:12

about blog github