一个质量门是工作必须通过的校验,才能继续推进。质量门的作用就是让“达到可发布标准”不再是主观判断,而是系统每次都统一执行的规则。
阻塞型与提示型
每个质量门都属于其中一种,这种区分正是整个设计的核心:
- 阻塞型——校验不通过时任务会暂停。只有校验通过,或经人工干预后,工作才能继续推进。
- 提示型——校验不通过时会被记录为发现项并附加到拉取请求中,但任务仍会继续执行。
先启用提示型质量门。观察一两周内质量门在实际工作中触发的情况,再把符合条件的升级为阻塞型。如果刚启用就设置为阻塞型且未经调优,往往只会迫使人员想办法绕过它。
阻塞性关卡
- 覆盖率低于 80%未通过
任务暂停
该任务将作为返工处理,而非生成您只会拒绝的 pull request。
- 有权限的人员可覆盖此限制,覆盖操作会记录相关人员、时间及原因。
提示性关卡
- 覆盖率低于 80%未通过
记录相关发现
任务会继续推进至审核环节。
- 该发现会附在 pull request 中供您评估。
质量门可校验的内容
质量门位于校验阶段之上,可覆盖以下内容:
- 你自己的测试套件运行通过
- 代码覆盖率阈值
- 代码规范检查与静态分析
- 安全扫描,配置在安全
- 针对正在运行的预览环境的浏览器测试
- 附加在 pull request 上的外部提供商提供的校验证据
最有价值的质量门几乎总是你现有的测试套件,因为它已经体现了团队认为重要的标准。
质量门中断工作的时机
质量门在校验阶段运行,即开发代理完成任务后、审核之前。阻塞型校验不通过时,任务会被退回重新处理,而不会生成你最终会拒绝的 pull request。
这样的顺序是有意为之:在流程内部失败的成本远低于在界面上暴露出来。
策略
质量门被归类到策略中,这才是你实际关联到项目上的内容。策略是一组命名的质量门及其阻塞/提示设置,因此你可以为生产服务设定一套标准策略,为内部工具采用更宽松的策略。
策略是版本化的。你发布变更后,如果新质量门过于严格,还可以回滚到之前的版本。
人工干预
具备权限的人员可以干预阻塞型质量门。干预行为会被记录——包括操作者、时间及对应任务。
记录本身才是关键。无法干预的质量门会被人员绕过;任何人都能随意干预的质量门则算不上真正的质量门。有迹可循的干预既实用又可追溯。
质量门无法做到的事
质量门仅校验属性。它们不会评判工作是否解决了正确的问题——这正是验收标准的作用,规格说明以及审核环节要完成的工作。
即使通过了所有质量门,更改仍可能是错误的。