测试门禁是什么
测试阶段作为发布前置条件:单元与集成测试全部通过,才允许进入构建与部署。对格式检查、可选集成等辅助类作业单独标记「允许失败」,既不阻断主流程,也避免用注释掉断言的方式让流水线假绿。门禁的粒度同样重要:核心用例集必须全绿,长期随机失败的用例要隔离修复,而不是默认放行。
基本信息
| 阻断规则 | 测试失败即停止后续阶段 |
|---|---|
| 允许失败 | GitLab allow_failure、GitHub continue-on-error,仅用于非阻断项 |
| 超时 | 为作业设置 timeout,防止挂起占用并发 |
| 重试 | 仅对基础设施类失败配置有限次重试 |
| 报告 | JUnit 格式报告接入平台展示失败用例 |
典型使用场景
- 合并前门禁:MR 或 PR 必须测试通过才允许合并。
- 发布前回归:完整集成测试通过后才触发部署。
- 分级阻断:核心套件阻断,辅助检查仅提示。
- 失败定位:JUnit 报告在合并请求里列出失败用例与日志。
- 超时保护:给测试作业设 timeout 与重试上限。
- 本地预检:常用套件提交前本地先跑,减少无效流水线轮次。
GitLab:测试门禁与允许失败
GitLab:测试门禁与允许失败
unit-test:
stage: test
script: pytest -q
timeout: 20m
lint-report:
stage: test
script: flake8 src || true
allow_failure: true # 仅提示:报告问题但不阻断门禁设计要素
| 要素 | 建议 | 原因 |
|---|---|---|
| 阻断范围 | 核心测试必须阻断 | 辅助检查允许失败以减少噪声 |
| 重试 | 仅限外部依赖失败 | 重试真实回归会掩盖缺陷 |
| 超时 | 按历史耗时上浮设置 | 挂起作业拖住并发额度 |
对测试作业配置自动重试会掩盖真实回归:重试只应用于网络下载、镜像拉取等外部依赖。
门禁结果要可见:失败用例名与日志链接应出现在合并请求页面,供修复时直接定位。
分支保护要把该检查设为必需状态,否则检查失败也拦不住合并。