对工作中碰到的 CI/CD 流程做一点简单梳理。

CI/CD 流水线

本文参考以下文档:

什么是 CI/CD

抽象的 CI/CD 流程并不复杂。

  • CI「持续集成」使得开发者可以频繁提交更改的代码,合并到应用当中,并自动构建应用镜像,运行不同级别的自动化测试(针对类、函数、功能模块等)来验证更改没有产生破坏性的错误,也没有与现存代码产生冲突。
    • 代码库提交 -> 静态(代码)分析 ->
  • CD(Continuous Delivery)「持续交付」将 CI 已经验证的代码合并到代码库,满足可以随时部署到生产环境的条件。
  • CD(Continuous Deployment)「持续部署」将前一个 CD 构建就绪的应用镜像部署到生产环境。

对应 Console 的流水线流程

  • 构建
    • 推到 Repo 合并入 master,从此步骤开始构建一个可部署的镜像 Deploy Candidate,进入后面的步骤
    • Linting 静态分析
    • 单元测试
    • 集成测试
  • 部署
    • 部署到开发环境
    • 部署到 QA 环境
    • 部署到 UAT 验收
    • 部署到 Staging 环境预览
  • 发布
    • 部署到生产环境,k8s 管理的一个个服务容器
      • 金丝雀发布
        将新镜像的实例发布到一组金丝雀容器,将原有镜像发布到另一组基线容器上,对比两者的 metrics,分析是否存在问题。

      • 逐步用新镜像的实例替换将所有旧实例