GitLab CI/CD任务优化:仅在MR合并至main分支时运行
调整GitLab CI/CD任务配置,仅在MR合并至main分支后执行
你当前的配置问题在于,仅针对源分支为main/master的MR做了拦截,但没有覆盖所有MR场景,导致从main发起MR到其他分支时,任务仍可能被触发。可以通过以下配置实现需求:
Test: stage: test script: - echo "hello world" rules: # 拦截所有MR事件的流水线,不管源/目标分支 - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' when: never # 仅在main分支的push流水线中运行(MR合并至main后会触发该类型流水线) - if: '$CI_COMMIT_REF_NAME == "main"' when: manual
配置说明
- 第一条规则直接拦截所有
merge_request_event类型的流水线,彻底避免MR过程中触发任务,包括从main向其他分支发起的MR。 - 第二条规则仅允许main分支的流水线执行任务,而MR合并至main分支后,GitLab会触发
push类型的流水线(而非MR事件),刚好符合这个条件。
这样调整后,任务只会在MR成功合并到main分支之后,由main分支的新提交触发的流水线中出现,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Origin
相关产品推荐
相关产品推荐

