GitLab流水线:合并到main分支的MR触发失败问题求助
GitLab CI流水线仅触发合并到main分支MR的正确配置
你之前的配置无法触发流水线,核心原因是在merge_request_event事件中,CI_COMMIT_BRANCH和CI_COMMIT_REF_NAME指向的是MR的源分支,而非你要合并到的目标分支(main)。要判断MR的目标分支,必须使用GitLab专为MR场景提供的预定义变量CI_MERGE_REQUEST_TARGET_BRANCH_NAME。
以下是正确的配置:
build: rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"' when: always - if: '$CI_PIPELINE_SOURCE == "web"' when: always - when: never
如果你的项目默认分支就是main,也可以用$CI_DEFAULT_BRANCH替代硬编码的"main",这样配置更灵活,后续默认分支变更时无需修改规则:
build: rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH' when: always - if: '$CI_PIPELINE_SOURCE == "web"' when: always - when: never
这个配置的效果:
- 仅当创建或更新目标分支为main的MR时,自动触发流水线。
- 保留通过Web UI手动触发流水线的功能。
- 其他事件(如直接提交代码到分支、标签推送等)不会触发流水线。
内容的提问来源于stack exchange,提问作者Adriaan Nering Bögel
相关产品推荐
相关产品推荐

