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

GitLab CI同一配置文件中定义的变量为空问题求助

GitLab CI变量无法被脚本读取的解决办法

问题场景

在gitlab.com使用默认共享运行器运行如下.gitlab-ci.yml脚本:

variables:
  VAR: Value

job:
  only:
    - main

  run:
  - name: test
    script: echo VAR=$VAR

执行后输出显示VAR为空值:

steps:
    - name: test
      script: echo VAR=$VAR
VAR=

开启CI_DEBUG_TRACE后确认VAR已被导出为Value,但脚本无法继承该环境变量,执行env命令也看不到这个变量,已排除环境段变量、保护变量等常见问题。

问题原因

你误用了旧版GitLab CI/CD的语法:run字段是针对早期Docker executor的废弃配置,当前标准的GitLab CI/CD语法不支持这种写法,导致变量无法正确传递到执行的脚本中。

解决方法

改用当前标准的GitLab CI/CD语法,有两种正确写法:

写法1:直接定义作业脚本

这是最常用的单命令/多命令作业写法:

variables:
  VAR: Value

job:
  only:
    - main
  script:
    - echo VAR=$VAR

写法2:使用多步骤格式(适用于支持步骤的执行器)

如果需要明确分步骤,要使用steps字段替代run,且每个步骤的script需为命令数组:

variables:
  VAR: Value

job:
  only:
    - main
  steps:
    - name: test
      script:
        - echo VAR=$VAR

修改配置后重新运行,脚本即可正确读取到VAR变量的值,输出VAR=Value。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:42:03