GitLab CI/CD 未设置 CI/CD 设置中设置的变量

Gyu*_*uri 5 gitlab gitlab-ci-runner

我正在运行 gitlab 作业,在该作业中我试图取消 CI / CD 设置中设置的某些变量。

例如,我已 SOME_VARIABLE设置为<some_value>

然后,在工作定义中,我尝试


variables:
   SOME_VARIABLE: ""
script:
    - echo SOME_VARIABLE - [%SOME_VARIABLE%]
Run Code Online (Sandbox Code Playgroud)

但在工作本身中我仍然得到

SOME_VARIABLE - [<some_value>]

代替

SOME_VARIABLE - []

有人遇到过这个吗?

Gyu*_*uri 6

我必须回答这个问题,因为它可能相当晦涩。

所以当你在 Windows 上设置变量时,你必须说

set v=some_value

要取消设置,需要

set v=

不是

set v=''

当您将其设置为空字符串时,它将是这样的,只需引号:

$ set v=""
$ echo %v%
""
Run Code Online (Sandbox Code Playgroud)

如果您正确地将其取消设置为空,您将得到:

$ set v=
$ echo %v%
%v%
Run Code Online (Sandbox Code Playgroud)

然而在gitlab中,你不能将值留空,例如

variables:
   v:
Run Code Online (Sandbox Code Playgroud)

因为它的语法无效。

所以我必须做的是取消设置脚本区域中的变量:

script:
  - set v=
  - run_my_script_that_needs_v_unset
Run Code Online (Sandbox Code Playgroud)

然后脚本按需要运行。

(我想在其他平台上也可以类似地完成。)


Kin*_*ang -1

项目 CI/CD 变量优先于 YAML 定义的变量。这是优先顺序。

  1. 触发变量或计划的管道变量。
  2. 项目级变量或受保护的变量。
  3. 组级变量或受保护变量。
  4. YAML 定义的作业级别变量。
  5. YAML 定义的全局变量。
  6. 部署变量。
  7. 预定义的环境变量。

来自GitLab CI/CD 变量:变量的优先级

  • 这在技术上是正确的,但没有回答我的问题。 (4认同)