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

如何从Git提交向GitLab CI流水线动态传递变量值

解决方案:GitLab CI 动态传递非机密关键词的几种方式

这问题我熟,刚好有几个完美符合你需求的方案,都是GitLab CI原生支持的,完全不用碰代码、不用修改流水线配置,也不用依赖分支名:

1. 手动触发流水线时传入自定义变量

这是最直接的方式,适合需要人工干预触发的场景:

  • 进入项目的 CI/CD > 流水线 页面,点击右上角的「运行流水线」
  • 在弹出的页面中,找到「变量」区域,添加你的自定义键值对(比如键为EXECUTION_MODE,值为fast_track)
  • 点击「运行流水线」,这个变量就会被注入到当前流水线的所有作业中

在.gitlab-ci.yml里直接使用这个变量来修改执行逻辑:

build_job:
  script:
    - echo "当前执行模式: $EXECUTION_MODE"
    - if [ "$EXECUTION_MODE" = "fast_track" ]; then
        npm run build:fast;
      else
        npm run build;
      fi

这个变量只会在当前流水线生效,不会被存入代码仓库,也不用修改项目的CI/CD全局变量配置。

2. 通过API触发流水线时传递变量

如果需要自动化触发(比如外部系统、脚本调用),可以用GitLab的流水线API来动态传值:

  • 调用POST /projects/:id/pipeline接口时,在请求参数里带上variables字段,格式如下:
curl --request POST \
  --url "https://gitlab.example.com/api/v4/projects/123/pipeline" \
  --header "PRIVATE-TOKEN: YOUR_ACCESS_TOKEN" \
  --form "ref=main" \
  --form "variables[EXECUTION_MODE]=fast_track"
  • 这样触发的流水线会自动带上这个变量,作业里同样可以直接使用$EXECUTION_MODE

3. 定时调度流水线时配置自定义变量

如果是定时执行的流水线,创建调度时也能设置动态变量:

  • 进入项目的 CI/CD > 流水线调度 页面,点击「新建调度」
  • 在「变量」区域添加你的键值对,每次创建不同的调度任务可以设置不同的变量值
  • 调度触发的流水线会自动使用这个变量来调整执行逻辑

关键优势总结

以上所有方案都满足你的限制条件:

  • 变量不会存储在代码仓库(既不在.gitlab-ci.yml里,也不会提交到版本控制)
  • 无需修改项目的CI/CD全局变量配置(不用手动重配置流水线)
  • 完全不依赖分支名称来传递信息
  • 非机密的关键词可以直接明文传递,无需额外加密处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:29:53