You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 19:09:04