如何配置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
相关产品推荐
相关产品推荐

