1. 课程导论:质量门禁驱动CI/CD的核心理念,SLI/SLO/SLI口径定义,课程目标与受众
1.1 质量门禁驱动的核心理念
传统CI/CD流水线关注“能否构建成功”与“能否部署”,但缺乏对交付质量的硬性约束。质量门禁(Quality Gate)将质量策略前置到流水线关键节点,只有通过预设质量阈值的制品才能进入下一阶段。核心理念可概括为:“不通过门禁,不向下游流动”。
核心理念三要素:
- 门禁节点:在构建、单元测试、集成测试、安全扫描、性能测试、部署等阶段设置检查点。
- 质量阈值:每个门禁节点绑定一个或多个SLI(服务等级指标),并设定SLO(服务等级目标)作为通过条件。
- 阻断与告警:未达SLO时流水线自动阻断,并触发告警通知相关团队。
下图展示了质量门禁在CI/CD流水线中的典型位置与决策逻辑:
1.2 SLI / SLO / SLI口径定义
在质量门禁体系中,三个核心术语构成度量基础:
| 术语 | 全称 | 定义 | 示例 |
|---|---|---|---|
| SLI | Service Level Indicator | 服务等级指标,对服务质量某一维度的量化度量 | 请求成功率、P99延迟、代码覆盖率 |
| SLO | Service Level Objective | 服务等级目标,SLI应达到的目标阈值或范围 | 请求成功率 ≥ 99.9%、P99延迟 ≤ 200ms |
| SLI口径 | SLI Definition / Specification | SLI的精确计算方式,包括数据来源、统计窗口、聚合方法、排除条件 | “过去5分钟内,所有HTTP 200响应数 / 总请求数” |
关键区分:SLI是“测量什么”,SLO是“目标值是多少”,SLI口径是“如何精确计算这个测量值”。没有清晰的口径定义,SLI/SLO就是空中楼阁。
1.3 SLI口径的构成要素
一个完整的SLI口径必须包含以下五个要素,缺一不可:
- 数据来源:日志、APM、监控系统、测试框架、代码扫描工具等。
- 统计窗口:时间范围,如“过去5分钟”、“最近1000次请求”、“本次构建周期”。
- 聚合方法:平均值、百分位数(P50/P95/P99)、成功率、覆盖率等。
- 排除条件:哪些数据不纳入统计(如健康检查请求、已知的灰度流量)。
- 计算表达式:明确的数学公式或伪代码。
以下是一个典型SLI口径的完整示例:
SLI名称:接口请求成功率
数据来源:Nginx访问日志(status字段)
统计窗口:滚动5分钟
聚合方法:成功请求数 / 总请求数 × 100%
排除条件:排除status=499(客户端断开)的请求
计算表达式:
success_count = count(status >= 200 AND status < 500)
total_count = count(status > 0)
sli_value = (success_count / total_count) * 100
SLO阈值:≥ 99.9%
1.4 课程目标与受众
本课程旨在帮助DevOps、SRE及质量工程团队建立一套可落地、可度量的质量门禁体系,核心目标如下:
| 目标维度 | 具体内容 |
|---|---|
| 理解 | 掌握质量门禁驱动CI/CD的核心理念与价值 |
| 定义 | 学会为不同流水线阶段定义精确的SLI口径 |
| 配置 | 能够在Jenkins、GitLab CI、Argo Workflows等工具中配置门禁参数 |
| 优化 | 基于门禁数据持续优化SLO阈值与流水线效率 |
目标受众:
- DevOps工程师:负责流水线设计与门禁集成
- SRE工程师:负责SLI/SLO定义与可靠性度量
- 质量工程(QE)专家:负责测试策略与质量门禁标准
- 技术管理者:需要理解质量门禁对交付效率与质量的影响
前置要求:建议学员具备CI/CD流水线基础操作经验,了解至少一种CI工具(Jenkins/GitLab CI/GitHub Actions),并对基本监控指标(延迟、错误率、吞吐量)有概念。