4. CI/CD 流水线概述:流水线阶段划分与关键角色

CI/CD 流水线是将代码从提交到生产环境的自动化流程,通常划分为四个核心阶段:代码提交、构建、测试和部署。每个阶段都有明确的输入、输出、关键节点和角色职责。理解这些阶段是定义 SLI 口径和进行故障排查的基础。

4.1 流水线阶段划分与核心活动

下表总结了四个阶段的核心活动、关键节点和典型产出物:

阶段 核心活动 关键节点 典型产出物
代码提交 开发者推送代码变更到版本控制系统(如 Git) 代码审查(Code Review)、合并请求(Merge Request) 提交记录、分支、标签
构建 编译代码、下载依赖、生成制品(如 JAR、Docker 镜像) 编译检查、依赖扫描、制品打包 构建产物、构建日志
测试 执行单元测试、集成测试、安全扫描、性能测试 测试覆盖率、质量门禁(Quality Gate) 测试报告、覆盖率报告
部署 将制品部署到目标环境(测试、预发布、生产) 环境配置、回滚策略、蓝绿/金丝雀发布 部署状态、环境版本
SLI 口径提示: 每个阶段的关键节点都是 SLI 的天然采集点。例如,“构建阶段”的“编译时长”和“测试阶段”的“测试通过率”是常见的 SLI 指标。

4.2 流水线阶段流程与角色

下图展示了 CI/CD 流水线的标准阶段流程,以及每个阶段涉及的核心角色:

CI/CD 流水线阶段流程与角色 CI/CD 流水线阶段流程与角色 代码提交 Code Commit 构建 Build 测试 Test 部署 Deploy 开发者 代码编写、提交 代码审查参与 DevOps 工程师 流水线配置 构建脚本维护 QA 测试工程师 测试用例编写 质量门禁审核 SRE 部署策略制定 生产环境监控 各阶段关键节点说明 代码提交阶段: • 代码审查(Code Review):确保代码质量和一致性 • 合并请求(Merge Request):触发流水线自动执行 构建阶段: • 编译检查:验证代码能否正确编译 • 依赖扫描:检查第三方依赖的安全漏洞 测试阶段: • 质量门禁(Quality Gate):设定测试覆盖率、代码质量阈值 • 安全扫描:检测代码和依赖中的安全风险 部署阶段: • 蓝绿部署:零停机切换新旧版本 • 金丝雀发布:逐步放量,监控异常

4.3 各阶段关键节点与角色职责

每个阶段都有特定的关键节点,这些节点是流水线稳定性和效率的保障。下表详细列出了各阶段的关键节点、角色职责和常见故障点:

阶段 关键节点 角色职责 常见故障点
代码提交 代码审查 开发者:提交代码;审查者:检查代码逻辑和风格 审查延迟、合并冲突
合并请求 开发者:创建 MR;DevOps:配置 Webhook 触发流水线 Webhook 失效、权限不足
构建 编译检查 DevOps:维护构建环境;开发者:修复编译错误 依赖缺失、环境不一致
制品打包 DevOps:配置制品仓库;SRE:验证制品完整性 制品损坏、仓库空间不足
测试 质量门禁 QA:设定阈值;DevOps:集成 SonarQube 等工具 阈值不合理、工具超时
安全扫描 安全团队:定义扫描规则;DevOps:集成扫描工具 误报过多、扫描耗时过长
部署 环境配置 SRE:管理配置中心;DevOps:自动化配置下发 配置错误、密钥泄露
回滚策略 SRE:制定回滚流程;DevOps:实现自动化回滚 回滚失败、数据不一致
故障排查要点: 流水线故障通常发生在阶段交接处。例如,构建阶段失败可能是由于代码提交阶段的依赖声明不完整;部署阶段失败可能是由于测试阶段的环境配置未同步。排查时应从故障点向上游追溯。

4.4 流水线阶段与 SLI 采集点

每个阶段的关键节点都是 SLI 数据的天然采集点。下表展示了各阶段常见的 SLI 指标及其采集位置:

阶段 SLI 指标 采集点 说明
代码提交 提交到触发流水线延迟 Webhook 接收时间 衡量代码提交到流水线启动的效率
构建 构建时长、构建成功率 构建任务开始/结束时间 反映构建环境的性能和稳定性
测试 测试通过率、测试覆盖率 测试执行结果、覆盖率报告 衡量代码质量和测试有效性
部署 部署时长、部署成功率 部署任务开始/结束时间 反映部署流程的自动化和可靠性
实践建议: 在流水线中为每个阶段的关键节点添加埋点,记录开始时间、结束时间、状态和错误信息。这些数据是后续 SLI 计算和故障排查的基础。建议使用统一的日志格式(如 JSON)以便于解析和分析。