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
相关产品推荐
相关产品推荐

