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

如何配置GitLab CI任务仅在release/分支运行

GitLab CI 仅在 release/ 分支执行任务的配置方案

方法一:使用 rules 语法(推荐)

rules 是GitLab CI官方推荐的新语法,灵活性更强,能精准控制任务的执行条件。以下配置会让任务仅在以 release/ 开头的分支上运行,其他分支直接跳过:

# 替换成你的任务名称
release_only_job:
  script:
    - echo "这里放你要执行的任务逻辑"
  rules:
    # 匹配所有以release/开头的分支
    - if: '$CI_COMMIT_BRANCH =~ /^release\//'
      when: always
    # 其他所有情况都不执行该任务
    - when: never

说明:$CI_COMMIT_BRANCH 是GitLab内置的预定义变量,存储当前触发流水线的分支名称;=~ 用于正则匹配,^release\/ 能精准匹配所有以release/开头的分支(注意斜杠需要转义)。

方法二:使用 only/except 语法(兼容旧版本)

如果你的GitLab版本较低(低于12.3),可以用传统的only规则来限定分支:

release_only_job:
  script:
    - echo "这里放你要执行的任务逻辑"
  # 仅匹配以release/开头的分支
  only:
    - /^release\//

如果需要更明确地排除某些分支(比如master、develop),可以加上except:

release_only_job:
  script:
    - echo "这里放你要执行的任务逻辑"
  only:
    - /^release\//
  except:
    - master
    - develop

说明:only字段里的正则表达式已经限定了任务的触发分支,即使不加except,其他分支也不会执行该任务。

常见踩坑点排查

  • 分支名匹配问题:确保你的分支名确实是以release/开头(比如release/v2.1),正则里的斜杠必须转义成\/,否则匹配会失败
  • 变量可用性:如果流水线是由tag触发的,$CI_COMMIT_BRANCH会为空,但你需求是分支触发,所以不用考虑这种情况
  • 规则冲突:如果任务同时配置了rules和only/except,GitLab会优先使用rules,所以不要混合使用两种语法

内容的提问来源于stack exchange,提问作者Iñigo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 08:01:28