CI/CD 基础概念:持续集成、持续交付、持续部署的定义与区别

在平台工程视角下,CI/CD 不仅仅是自动化流水线,更是服务目录中“交付能力”的核心载体。理解三者的定义与边界,是设计可复用、可编排的 CI/CD 服务目录的前提。

一、核心定义

概念 英文 核心动作 关键目标
持续集成 Continuous Integration 频繁合并代码 → 自动构建 + 自动测试 尽早发现集成问题,保证主干健康
持续交付 Continuous Delivery CI 通过后 → 自动部署到类生产环境 → 人工确认发布 软件随时可发布,但由人决定“是否上线”
持续部署 Continuous Deployment CI 通过后 → 全自动部署到生产环境 消除人工门禁,实现端到端全自动化
平台工程提示: 服务目录中应把 CI、CD、CDep 作为三个独立的“能力单元”注册。平台团队提供标准化的 CI 管道模板,而交付与部署策略允许业务团队按需选择。

二、三者的区别与演进关系

从 CI 到 CDep 是一个逐步解除人工约束的过程,核心区别在于“生产环境部署”这一环节的自动化程度。

  • CI → CD: 增加了“制品管理”与“环境部署”阶段,但保留“人工审批”门禁。
  • CD → CDep: 移除了人工审批,完全依赖自动化策略(灰度、金丝雀、滚动更新)。
  • 平台工程关键点: 服务目录应支持“门禁可配置”,允许团队在 CD 与 CDep 之间灵活切换,而非强制绑定。
常见误区: 很多团队误以为“自动化测试 + 自动部署到测试环境”就是持续部署。实际上,持续部署的严格定义是“每次提交都自动部署到生产环境”,中间没有任何人工干预。

三、CI/CD 流水线核心要素

一条完整的 CI/CD 流水线由多个阶段组成,每个阶段对应服务目录中的一个或多个“能力原子”。

  1. 代码触发与源管理: 监听 Git 事件(push、PR、tag),支持 Webhook 与定时轮询。
  2. 静态分析与代码检查: Lint、SonarQube、安全扫描(SAST)。
  3. 构建与编译: 多语言构建(Maven、Gradle、npm、Go build),生成不可变制品。
  4. 单元测试与集成测试: 测试框架执行,覆盖率门禁。
  5. 制品打包与存储: Docker 镜像构建、Helm Chart 打包,推送至制品仓库(Harbor、Artifactory)。
  6. 环境部署: 开发/测试/预发/生产环境,支持声明式部署(Kubernetes、Terraform)。
  7. 验收测试与安全扫描: 集成测试、DAST、容器镜像漏洞扫描。
  8. 审批门禁与发布策略: 人工审批、自动门禁(质量卡点)、灰度发布策略。
  9. 反馈与通知: 流水线状态、质量报告、部署事件推送至协作平台(Slack、钉钉、邮件)。
平台工程避坑: 不要将流水线设计成“铁板一块”的巨型 Job。应拆分为可复用的阶段模块,每个模块在服务目录中独立注册版本,支持团队按需组装。

四、CI/CD 流水线核心要素架构图

下图展示了 CI/CD 流水线的标准阶段划分与数据流向,各阶段均可映射为服务目录中的独立能力项。

CI/CD 流水线核心要素架构图 CI/CD 流水线核心要素架构图 代码触发 静态分析 构建编译 单元/集成测试 制品打包存储 环境部署 验收/安全扫描 审批门禁 灰度/发布策略 反馈通知 服务目录映射说明 每个阶段均可注册为服务目录中的独立能力单元,支持版本化、可编排、可复用

五、CI/CD 三阶段对比表

从平台工程的服务目录设计角度,需要明确每个阶段对平台能力的不同要求。

维度 持续集成 (CI) 持续交付 (CD) 持续部署 (CDep)
自动化程度 构建 + 测试自动化 CI + 部署自动化(含人工门禁) 全自动化,无人工干预
生产部署 不涉及 人工确认后部署 自动部署
门禁类型 质量门禁(测试覆盖率、代码规范) 质量门禁 + 人工审批 质量门禁 + 自动策略门禁
回滚能力 不涉及 支持手动回滚 支持自动回滚(策略驱动)
平台服务目录要求 提供构建环境、测试框架、制品仓库 增加环境管理、部署编排、审批工作流 增加灰度策略、自动回滚、监控联动
平台工程最佳实践: 服务目录中应将 CI、CD、CDep 设计为“递增式能力包”。团队从 CI 起步,逐步解锁 CD 和 CDep 能力,平台通过 RBAC 和策略引擎控制每个阶段的可见性与可用性。

六、流水线核心要素的依赖关系图

下图展示了流水线各阶段之间的数据依赖与制品流转关系,帮助理解服务目录中能力单元的输入输出契约。

流水线阶段依赖与制品流转图 流水线阶段依赖与制品流转图 源码仓库 构建编译 制品仓库 环境部署 运行监控 反馈回路:质量数据、部署状态、运行指标 服务目录输入输出契约 每个阶段定义明确的输入(源码/制品/配置)和输出(制品/部署状态/监控数据),形成可编排的能力单元

七、平台工程视角下的关键设计原则

  • 能力原子化: 将 CI/CD 流水线拆分为可独立注册、版本化、可编排的能力单元,每个单元有明确的输入输出契约。
  • 门禁可配置: 质量门禁、审批门禁、策略门禁均作为服务目录中的“策略资源”,允许团队按需绑定。
  • 制品不可变: 构建产物一旦生成即不可修改,后续所有环境使用同一制品,保证环境一致性。
  • 反馈闭环: 流水线各阶段的运行数据、质量数据、部署结果必须回传至平台,用于服务目录的SLA监控与能力优化。
总结: CI/CD 是平台工程服务目录中最核心的“交付能力域”。理解 CI、CD、CDep 的差异,并将流水线拆解为可复用的能力原子,是构建高效、灵活、可治理的平台基础。