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

咨询GitLab合并请求推送代码时触发两条流水线的原因

问题解答

当你向已创建合并请求的分支推送代码时,GitLab会自动触发两类流水线,这就是你看到两条流水线的原因:

  1. 合并请求流水线
    这类流水线的$CI_PIPELINE_SOURCE值为merge_request_event,完全匹配你Build/Test任务里的第一条规则。所以这条流水线会执行Lint、Build、Test三个阶段的所有任务。

  2. 分支推送流水线
    推送代码到分支本身还会触发一条常规的分支流水线,此时$CI_PIPELINE_SOURCE值为push。你的Build/Test任务规则里没有匹配push的条件,所以这两个任务会被跳过;而Lint任务的规则是「除非是标签提交,否则始终执行」,所以只有Lint任务会在这条流水线里运行,也就形成了仅包含lint阶段的流水线。

如果想避免生成这条分支推送流水线,可以在Lint任务的规则里添加排除条件,比如:

Lint:
  rules:
    - if: $CI_COMMIT_TAG
      when: never
    - if: $CI_PIPELINE_SOURCE == "push" && $CI_OPEN_MERGE_REQUESTS
      when: never
    - when: always

这样当有打开的合并请求时,分支推送的流水线就不会触发Lint任务,也就不会生成那条仅含Lint的流水线了。

内容的提问来源于stack exchange,提问作者Daniel Walker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:48:14