如何在 windows 上使用 gitlab-ci-multi-runner 访问 gitlab-ci.yml 中的变量

How to access variables in gitlab-ci.yml using gitlab-ci-multi-runner on windows

我无法找到如何访问 gitlab-ci.yml 文件提供的构建脚本中的变量。

我试过两种方式声明变量:

  1. GitLab Web 界面中的私有变量 CI
  2. config.toml
  3. 中的变量 overrides/apennding

我尝试在我的 gitlab-ci.yml-files 命令中访问它们:

msbuild ci.msbuild [...] /p:Configuration=Release;NuGetOutputDir="$PACKAGE_SOURCE"

其中 $PACKAGE_SOURCE 是所需的变量 (PACKAGE_SOURCE) 但它不起作用(它似乎没有被替换)。手动执行相同的命令按预期工作(用其内容替换变量名称)

是否需要一些我不知道的其他语法?

我试过:

$PACKAGE_SOURCE
$(PACKAGE_SOURCE)
${PACKAGE_SOURCE}

PS:验证跑步者不会引发任何问题,如果这很重要的话。

我猜你正在使用 Windows 作为跑步者?我自己也遇到了同样的问题,甚至无法使以下内容正常工作:

script:
  - echo $MySecret

但是,阅读 Gitlab 文档它有一个条目 syntax of environment variables in job scripts:

To access environment variables, use the syntax for your Runner’s shell

这是有道理的,因为给出的大多数示例都是针对 bash 跑步者的。对于我的 windows 跑步者,它使用 %variable%.

我将我的脚本更改为以下,这对我有用。 (通过观察构建输出确认。)

script:
  - echo %MySecret%

如果您正在为您的跑步者使用 powershell,则语法为 $env:MySecret

除了上面标记为正确的答案中所说的内容外,您还应该检查gitlab设置中的CI变量是否设置为“受保护”。如果是这样,您可能无法在不受保护的分支中使用它们。

“您可以保护项目、组或实例 CI/CD 变量,使其仅传递到受保护分支或受保护标签上的管道 运行。” -> 检查它 https://docs.gitlab.com/ee/ci/variables/index.html#protect-a-cicd-variable