一、什么是CI/CD:持续集成与持续交付

CI/CD(Continuous Integration/Continuous Delivery)是一套通过自动化构建、测试、部署流水线,实现软件快速、可靠交付的工程实践。其中 CI(持续集成)关注代码集成与自动化验证,CD 包含持续交付(Delivery)与持续部署(Deployment)两个层次:持续交付让软件随时可发布,持续部署则自动将变更发布到生产。CI 概念起源于 1991 年 Grady Booch 的理念,2001 年敏捷宣言发布后 CI 实践得到广泛推广,2006 年 Jenkins(Hudson)发布推动 CI 工具化,当前 CI/CD 与 GitOps、平台工程深度结合。
二、原理
1. 持续集成:开发者频繁合并代码到主干,每次合并触发自动化构建与测试 → 2. 自动化测试:单元测试、集成测试、UI 测试通过流水线自动执行 → 3. 持续交付:每次通过测试的构建都可一键发布到生产环境 → 4. 持续部署:通过自动化门禁把通过测试的代码自动发布到生产 → 5. 发布策略:支持蓝绿部署、灰度发布、金丝雀发布等降低发布风险 → 6. 监控反馈:发布后实时监控业务指标与异常
三、信息卡片
| 中文名 | 持续集成与持续交付 |
| 英文名 | Continuous Integration / Continuous Delivery |
| 缩写 | CI/CD |
| 别名 | 持续集成与持续交付、持续集成、持续交付、持续部署 |
| 提出者 | Grady Booch(1991 年提出 CI 概念);Jez Humble & David Farley(《Continuous Delivery》,2010) |
| 提出时间 | 1991 年(CI 概念);2010 年(CD 理论化) |
| 所属类别 | IT 基础架构 > 工程实践 > 软件交付自动化 |
| 核心技术 | 自动化构建、自动化测试、流水线编排、GitOps、容器镜像构建 |
| 主要应用 | 互联网产品交付、企业应用、云原生应用、AI 模型部署 |
四、历史时间线
1991 年:Grady Booch 在《Object-Oriented Analysis and Design》中提出 CI 概念雏形
- 2001 年:敏捷宣言发布,CI 实践被广泛推广
- 2004 年:ThoughtWorks 推出 CruiseControl,CI 工具化
- 2005 年:Martin Fowler 发表《Continuous Integration》文章,系统化 CI 实践
- 2006 年:Jenkins(原 Hudson)发布,CI 工具事实标准形成
- 2010 年:Jez Humble & David Farley 出版《Continuous Delivery》
- 2014 年:GitLab CI、Travis CI 等现代 CI 工具涌现
- 2018 年后:GitOps、ArgoCD、Spinnaker 等 CD 工具流行
- 2020 年后:CI/CD 与 AI(AI 测试)、平台工程融合
五、分类
- 按阶段:CI(持续集成)vs CD(持续交付)vs CD(持续部署)
- 按工具:Jenkins、GitLab CI、GitHub Actions、CircleCI、ArgoCD、Spinnaker、Flux
- 按部署策略:蓝绿部署(Blue-Green)vs 灰度发布(Grayscale)vs 金丝雀发布(Canary)
- 按云原生:传统 CI/CD vs GitOps CI/CD(声明式、Git 驱动)
- 按应用领域:应用 CI/CD vs ML CI/CD(MLOps 流水线)vs 基础设施 CI/CD(GitOps)
六、应用场景
- 互联网产品交付:每日多次发布的 Web/移动应用
- 云原生应用:通过 GitOps 持续推送到 Kubernetes
- AI 模型部署:MLOps 流水线自动化训练、评估、部署
- 微服务交付:多微服务协同发布与回滚
- 基础设施变更:通过 IaC + CI/CD 实现基础设施自动化变更
- 企业应用现代化:传统应用容器化与 CI/CD 改造
七、优缺点
优点:加速交付:把发布周期从天/月级压缩到分钟级;提升质量:自动化测试与持续反馈降低缺陷率;降低发布风险:通过灰度发布与一键回滚降低故障影响;提升团队协作:标准化的流水线让多人协作更顺畅
- 缺点:自动化测试投入大:完整自动化测试套件建设成本高;流水线复杂度高:复杂业务的流水线编排与维护成本不低;环境一致性挑战:测试与生产环境差异仍可能引发问题;持续部署需要信任:自动部署到生产对测试与监控要求极高
八、常见误区
- CI = CD(错:CI 是持续集成,CD 包括持续交付与持续部署,两者目标不同)
- CI/CD = Jenkins(错:Jenkins 是 CI 工具之一,CI/CD 是实践方法论)
- 上了 CI/CD 就万事大吉(错:CI/CD 需要配套的自动化测试、监控与组织文化)
- 持续部署等于激进发布(错:持续部署需要严格的质量门禁与监控保障)
九、关联概念
- 父概念:DevOps · 开发运维一体化、敏捷开发 Agile Development
- 子概念:持续集成 CI、持续交付 CD、持续部署 CD、GitOps、蓝绿部署
- 兄弟概念:DevOps · 开发运维一体化、GitOps、Agile · 敏捷开发、平台工程、ArgoCD
- 对比概念:CI vs CD、持续交付 vs 持续部署、GitOps vs 传统 CI/CD
- 应用相关:DevOps · 开发运维一体化、云原生、Kubernetes容器编排、GitOps、ArgoCD