如何配置规则避免.gitlab-ci.yml变更触发GitLab CI指定作业
问题原因
- GitLab CI中
rules关键字优先级高于旧版的only/except,之前尝试的except配置没有和rules搭配使用,因此无法生效 - 原配置中的Stage B未设置任何过滤规则,默认会被加入所有触发的流水线中,因此修改.gitlab-ci.yml时也会显示在流水线列表中
解决方案
直接调整Stage B的作业配置,新增rules过滤规则即可,修改后的完整配置如下:
stages: - A - B Stage A: stage: A script: - echo "TEST" rules: - if: '$CI_COMMIT_TAG =~ /^\d+\.\d+\.DEV\d+/' tags: - runner Stage B: stage: B script: - echo "TEST" rules: # 变更包含.gitlab-ci.yml时,不将该作业加入流水线 - changes: - .gitlab-ci.yml when: never # 其余场景保持手动触发逻辑 - when: manual tags: - runner
生效场景验证
- 单独推送.gitlab-ci.yml变更时,Stage B不会被加入流水线,符合需求
- 合并请求包含.gitlab-ci.yml变更时,Stage B不会被加入流水线,符合需求
- 其他文件变更的推送、合并请求场景中,Stage B仍然作为手动作业正常出现在流水线中,不影响原有逻辑
内容的提问来源于stack exchange,提问作者Sushil.R
相关产品推荐
相关产品推荐

