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