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

GitLab中CI_PIPELINE_TRIGGERED何时为false或null?

关于GitLab CI_PIPELINE_TRIGGERED变量的澄清

首先明确结论:CI_PIPELINE_TRIGGERED永远不会返回false或null——这个变量只有在流水线通过GitLab的专用触发器机制触发时才会被设置为true,其他所有场景下,这个变量根本不会被定义(也就是不存在)。

什么时候会出现CI_PIPELINE_TRIGGERED=true?

只有当流水线通过以下几种特定方式启动时,GitLab才会设置这个变量:

  • 使用项目CI/CD设置中生成的触发器令牌触发的流水线
  • 在项目的「CI/CD触发器」页面手动点击运行的流水线
  • 通过GitLab API调用POST /projects/:id/trigger/pipeline触发的流水线

为什么你会觉得它"始终为true"?

大概率是你测试的场景刚好都是用触发器机制触发的流水线,或者在配置里错误地默认给这个变量赋值了。如果换用其他触发方式(比如代码推送、合并请求、定时任务、手动运行流水线等),你会发现这个变量根本不存在。

和CI_PIPELINE_SOURCE的区别

你之前混淆的CI_PIPELINE_SOURCE是用来标识所有流水线触发来源的变量,它的值包括push、merge_request_event、schedule、trigger等。而CI_PIPELINE_TRIGGERED只是针对CI_PIPELINE_SOURCE=trigger这个特定场景的一个快捷标记——只有当来源是触发器时,这个变量才会存在且为true。

正确的判断方式

如果要判断流水线是否来自触发器,推荐用两种方式:

check-trigger:
  script:
    # 方式1:检查变量是否存在
    - if [ -n "$CI_PIPELINE_TRIGGERED" ]; then echo "触发器触发的流水线"; else echo "非触发器触发"; fi
    # 方式2:直接判断CI_PIPELINE_SOURCE的值
    - if [ "$CI_PIPELINE_SOURCE" = "trigger" ]; then echo "触发器触发的流水线"; fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 02:22:41