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

如何禁止GitLab CI作业手动重试,仅允许最新提交运行新流水线?

解决方案

1. 直接禁用项目级作业重试功能

进入GitLab项目的设置 > CI/CD > 流水线设置,找到“作业重试”选项并关闭。这样单个作业或整个流水线的重试按钮都会被禁用,彻底阻止在历史提交上执行重试操作。

2. 通过CI脚本校验提交是否为最新

在流水线的前置步骤(或全局before_script)中添加校验逻辑,仅当当前运行的提交是对应分支的最新提交时,才允许流水线继续执行,否则直接终止:

# 获取当前分支的最新远程提交SHA
LATEST_COMMIT=$(git rev-parse origin/$CI_COMMIT_BRANCH)
# 对比当前流水线的提交SHA
if [ "$CI_COMMIT_SHA" != "$LATEST_COMMIT" ]; then
  echo "错误:当前提交并非分支最新提交,流水线终止"
  exit 1
fi

这种方式保留重试按钮,但重试历史提交时会自动失败,无法完成执行。

3. 用Workflow规则限制仅最新提交可触发流水线

通过workflow规则配置,仅允许在最新提交上触发手动流水线:

workflow:
  rules:
    # 仅当手动触发(web来源)且当前提交是默认分支最新提交时,允许流水线运行
    - if: '$CI_PIPELINE_SOURCE == "web" && $CI_COMMIT_SHA == $CI_DEFAULT_BRANCH_SHA'
      when: always
    # 其他情况一律禁止流水线运行
    - when: never

如果需要支持非默认分支,可结合脚本动态获取分支最新SHA,或调整规则中的变量适配需求。

内容的提问来源于stack exchange,提问作者stackprotector

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 04:27:43