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

GitLab预定义变量CI_PIPELINE_SOURCE取值含义及合并事件触发流水线方法

CI_PIPELINE_SOURCE 所有取值含义说明
  • push:向 GitLab 仓库分支推送代码时触发的流水线对应取值,打标签推送的场景也会返回该值。
  • web:通过 GitLab Web 界面手动点击「运行流水线」按钮触发的流水线对应值。
  • schedule:由仓库配置的定时流水线任务触发的对应值。
  • api:通过调用 GitLab 开放的流水线触发 API 触发时的对应值。
  • merge_request_event:合并请求(MR)创建、更新(提交新代码)、重新运行流水线时的取值,仅 MR 处于未合并状态时触发的流水线才会返回该值,合并动作本身不会触发该类型的流水线。
  • external:由 GitLab 外部的集成服务(比如第三方 CI 系统、外部代码托管平台的 webhook)触发流水线时的取值。
  • chat:通过绑定的聊天工具(比如 Slack、Mattermost 等)输入聊天指令触发的流水线对应值。
  • webide:在 GitLab 内置的 Web IDE 中点击「提交并触发流水线」操作时的对应取值。
  • external_pull_request_event:当你把 GitLab 仓库关联到 GitHub 等外部平台的代码仓库时,外部平台创建/更新 PR(拉取请求)时触发的 GitLab 流水线对应值。
  • parent_pipeline:在同一项目的父子流水线结构中,子流水线被父流水线触发时的取值。
  • trigger:通过配置的触发器令牌(trigger token)触发的流水线对应值,常用于跨项目触发流水线的场景。
  • pipeline:在多项目流水线结构中,当前流水线被另一个项目的流水线触发时的取值,和parent_pipeline的区别是该值对应跨项目触发的场景,parent_pipeline对应同一项目内的父子流水线场景。
代码合并到分支的事件识别与流水线配置

代码合并到目标分支的本质是一次向目标分支的推送操作,所以此时CI_PIPELINE_SOURCE的值为push,同时可以结合CI_COMMIT_BRANCH变量来指定要识别的目标分支(比如主分支main/master)。如果需要更精准的判断该推送是否来自合并请求合并的操作,还可以结合CI_MERGE_REQUEST_ID变量是否为空:合并请求合并产生的推送CI_MERGE_REQUEST_ID会有对应有效值,普通本地推送该值为空。

配置示例如下:

# 仅当代码合并到main分支时运行的job
run_on_merge_to_main:
  script:
    - echo "代码已合并到main分支,执行对应任务"
  rules:
    # 匹配向main分支的推送,且是合并请求合并产生的推送
    - if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push" && $CI_MERGE_REQUEST_ID != null

如果不需要区分是合并产生的推送还是普通推送,去掉$CI_MERGE_REQUEST_ID != null的判断即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:06:02