4. 审批流概述:审批流在CI/CD中的位置、常见审批节点
在持续集成与持续交付(CI/CD)流水线中,审批流(Approval Flow)是连接自动化执行与人工决策的关键桥梁。它确保高风险操作(如生产环境部署、配置变更、敏感数据访问)在进入下一阶段前,获得必要的授权与验证。本章将系统阐述审批流在CI/CD体系中的定位、核心价值以及两类最常见的审批节点。
4.1 审批流在CI/CD中的位置
CI/CD流水线通常由代码提交、静态分析、单元测试、集成测试、构建打包、环境部署、验收测试等阶段串联而成。审批流并非独立阶段,而是嵌入在流水线关键节点之间的门禁(Gate)。其典型位置包括:
- 构建后-部署前:验证构建产物是否通过质量门禁,允许人工确认版本号与变更内容。
- 测试环境-预发布环境:在非生产环境验证通过后,需要审批才能进入预发布或灰度环境。
- 预发布环境-生产环境:最高风险环节,通常需要多级人工审批与变更管理工单关联。
- 生产环境-全量发布:灰度/金丝雀发布完成后,需要审批确认才能全量推送。
核心原则:审批流应遵循“最小必要”原则——只在真正需要人工判断的节点插入审批,避免过度审批拖慢交付速度。
下表对比了审批流在CI/CD不同阶段的典型应用场景与风险等级:
| 流水线阶段 | 审批触发条件 | 风险等级 | 典型审批类型 |
|---|---|---|---|
| 代码合并(MR/PR) | 代码评审通过后 | 低-中 | 自动审批(代码规范检查) |
| 构建完成 | 单元测试+集成测试通过 | 低 | 自动审批(测试覆盖率达标) |
| 部署到测试环境 | 构建产物就绪 | 低 | 自动审批(环境可用性检查) |
| 部署到预发布环境 | 测试环境验证通过 | 中 | 人工审批(测试经理确认) |
| 部署到生产环境 | 预发布环境验证通过 | 高 | 人工审批(变更经理+技术负责人) |
| 全量发布 | 灰度验证通过 | 高 | 人工审批(发布委员会) |
下图展示了审批流在典型CI/CD流水线中的嵌入位置与流转关系:
4.2 常见审批节点
根据审批触发方式与执行主体的不同,审批节点主要分为人工审批和自动审批两大类。两者在CI/CD流水线中协同工作,形成“自动检查为主、人工干预为辅”的治理模式。
4.2.1 人工审批节点
人工审批节点要求指定的审批人(或审批组)在流水线暂停时,通过审批平台(如Jenkins、GitLab、ArgoCD、自定义门户)做出“通过/拒绝/暂停”决策。其典型特征包括:
- 审批人指定:支持单人审批、多人会签(所有审批人通过)、或签(任意一人通过)、加权审批。
- 超时策略:超过设定时间未响应,可自动拒绝、自动通过或升级通知上级审批人。
- 审批上下文:审批界面需展示本次变更的详细信息(提交记录、测试报告、变更影响范围、回滚方案)。
- 审计追溯:所有审批操作记录写入审计日志,支持事后合规审查。
最佳实践:生产环境部署的人工审批建议采用“双人审批”模式(技术负责人+变更经理),并强制要求审批人填写审批意见,避免“无脑通过”。
4.2.2 自动审批节点
自动审批节点由流水线引擎根据预设规则自动执行,无需人工介入。其核心价值在于消除低价值等待,加速低风险阶段的流转。常见自动审批规则包括:
| 规则类型 | 检查条件 | 通过条件 | 失败处理 |
|---|---|---|---|
| 代码质量门禁 | SonarQube扫描结果 | 新增代码覆盖率≥80%,无阻断性问题 | 流水线失败,通知开发人员 |
| 安全扫描门禁 | 依赖漏洞扫描、SAST/DAST结果 | 无高危/严重漏洞 | 流水线失败,触发安全工单 |
| 测试覆盖率门禁 | 单元测试+集成测试覆盖率报告 | 整体覆盖率≥75%,新增代码覆盖率≥85% | 流水线失败,生成覆盖率报告 |
| 环境健康检查 | 目标环境可用性探测、资源水位 | 环境响应正常,CPU/内存使用率≤80% | 暂停流水线,等待环境恢复或自动切换备用环境 |
| 合规性检查 | 许可证合规、数据分类标签 | 所有依赖许可证在白名单内 | 流水线失败,通知合规团队 |
下图对比了人工审批与自动审批在触发条件、执行流程与反馈机制上的差异:
4.3 审批节点选择策略
在实际项目中,需要根据风险等级、变更频率和合规要求综合选择审批节点类型。以下策略可供参考:
- 低风险、高频次(如开发环境部署):优先使用自动审批,仅设置代码质量门禁和测试覆盖率门禁。
- 中风险、中频次(如测试环境部署):自动审批+单人人审批,自动检查通过后由测试负责人确认。
- 高风险、低频次(如生产环境部署):多级人工审批+自动合规检查,确保变更可追溯、可回滚。
- 合规敏感场景(如金融、医疗):强制人工审批+审计日志+变更工单关联,自动审批仅作为前置条件。
常见误区:不要将所有审批节点都设置为人工审批,否则会导致流水线频繁等待,降低交付效率。建议将人工审批控制在流水线总节点数的20%以内,其余使用自动审批。