You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何匹配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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 17:53:22