我正在 gitlab.com 上使用默认共享运行器运行这个最小的
.gitlab-ci.yml
脚本:
variables:
VAR: Value
job:
only:
- main
run:
- name: test
script: echo VAR=$VAR
这是输出
steps:
- name: test
script: echo VAR=$VAR
VAR=
这到底是怎么回事?我如何实际获取变量的值?这似乎与有关变量的文档直接矛盾。
请注意,设置
CI_DEBUG_TRACE: true
显示
CI_RUNNER_VERSION=17.4.0~pre.110.g27400594
和
++ export VAR=Value
++ VAR=Value
所以这似乎是脚本无法访问/继承环境而不是被忽略的变量。 运行
script: env
证实了这一点:
steps:
- name: test
script: env
PWD=/builds
SHLVL=0
PATH=/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env
我已经寻找过这个问题,但我发现的所有潜在的欺骗都是遗漏的:这与在environment
部分中使用空变量,或受保护的变量,或从加载变量不同
source
等
我认为这里的问题不在于变量,而在于错误的语法。我刚刚测试了它,变量按预期工作:
variables:
VAR: Value
job:
only:
- main
script:
- echo VAR=$VAR
在输出中我看到:
Executing "step_script" stage of the job script
$ echo VAR=$VAR
VAR=Value
Cleaning up project directory and file based variables
Job succeeded