如何匹配GitLab作业失败错误与retry YAML类型?
GitLab CI 作业失败类型与
retry.when的匹配方案 目前GitLab CI没有原生支持直接将作业/Runner日志中的错误内容映射到retry.when内置类型的功能,但可以通过以下两种方法实现类似需求:
1. 自定义错误检测+custom重试类型
针对日志中的特定偶发错误,在作业脚本里手动识别并返回自定义退出码,再通过retry.when: custom触发重试:
- 在作业脚本中添加逻辑,扫描输出日志匹配目标错误关键词(比如网络超时、临时资源不足等)
- 匹配成功时返回一个自定义退出码(例如100),否则返回常规失败码
- 在CI配置中指定仅对该自定义退出码触发重试
示例配置:
flaky_job: script: - ./run_job.sh || (grep -q "偶发错误关键词" <(./run_job.sh) && exit 100 || exit 1) retry: when: custom exit_codes: [100]
2. 通过API获取作业内置失败类型
作业失败后,调用GitLab API获取作业详情,其中的failure_reason字段值就是对应retry.when的内置类型(如script_failure、runner_system_failure等)。你可以根据这个字段的值,调整后续CI配置的重试规则。
需要注意:GitLab内置的retry.when类型是基于作业整体失败原因的分类,并非直接对应日志中的具体错误文本。如果要针对特定日志错误触发重试,自定义退出码的方式更精准。
内容的提问来源于stack exchange,提问作者Artem Ptushkin
相关产品推荐
相关产品推荐

