如何配置CI pipeline使其仅在向指定分支提MR及工作分支有新推送时触发
问题原因
你当前配置的错误在于把分支匹配规则和事件触发规则混用在了only的根列表下,push属于GitLab CI的触发事件类型,不是分支名,按你现有写法只会在三种场景触发:所有MR事件、推送到develop分支、推送到名为push的分支,和你的预期不符。
修正方案
方案1:使用only配置(兼容旧版本GitLab)
unit_test: stage: test script: - echo "unit test running" only: refs: - merge_requests # 匹配所有MR事件 - push # 匹配所有push事件 # 若需要仅向指定分支发起的MR才触发,放开以下配置,将main替换为你的目标分支即可 # variables: # - $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # 若需要仅指定分支的push才触发,将上面refs里的push替换为对应分支名,例如- develop
方案2:使用rules配置(更推荐,逻辑更清晰)
unit_test: stage: test script: - echo "unit test running" rules: # 规则1:向指定分支(示例为main)发起的MR触发,不需要分支限制可删除&&后面的条件 - if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main" # 规则2:所有分支push提交时触发,仅需特定分支触发可替换为 $CI_COMMIT_BRANCH == "你的分支名" - if: $CI_PIPELINE_SOURCE == "push"
内容的提问来源于stack exchange,提问作者Kimbriel Oraya
相关产品推荐
相关产品推荐

