GitLab:使用“variables”中的额外值扩展“!reference”

Myk*_*vyi 9 gitlab gitlab-ci

如何!referencevariables块中使用然后扩展条目列表?

例如,我希望能够做类似的事情

variables:
  !reference [.common_variables, variables]
  FOO: "bar"
Run Code Online (Sandbox Code Playgroud)

目前我在 GitLab linter 中遇到错误:

此 GitLab CI 配置无效:():在第 1 行第 1 列解析块映射时未找到预期的键

PS 请注意,这个问题专门针对!reference.

  • Yaml 锚点超出了这个问题的范围,因为我想将.common_variables其放入管道中包含的单独文件中。
  • extends:机制超出了这个问题的范围。它确实有效,但它有一个奇怪的行为,即人们还在extends环境中获取变量,请参阅GitLab:在“变量”中使用“扩展”

Mas*_*oob 5

variables: !reference [.common_variables, variables]
Run Code Online (Sandbox Code Playgroud)

是正确的引用方式,但是 gitlab yml 结构不支持 !reference 关键字之后的附加定义。

我的建议是在变量文件中有一个更具体的定义,使用锚点来共享公共变量。

例如:

在“variables.gitlab-ci.yml”中:

.common_variables: &common_variables
     COMMON_VAR: value

.variables:Example-job
    variables:
        <<: *common_variables
        FOO: "bar"
Run Code Online (Sandbox Code Playgroud)

在“.gitlab.ci.yml”中:

Example-job:
    variables: !reference [".variables:Example-job", "variables"]
    script:
        ...
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,您可以将外部模板中的“!reference ['.common_variables', 'variables']”引用到“variables.gitlab-ci.yml”中的“.internal_common_variables”,然后使用锚点`&lt;&lt;:` 将它们拉入 `.variables:Example-job` 中。不确定这是否有效,但可能值得一试。 (2认同)

小智 -3

variables:
  !reference [.common_variables, variables]
  FOO: "bar"
Run Code Online (Sandbox Code Playgroud)

或者如果你想将变量分配给一个新变量,你可以使用这个

variables:
    MY_VAR: !reference [.common_variables, variables]
Run Code Online (Sandbox Code Playgroud)

有关更多信息 - https://docs.gitlab.com/ee/ci/yaml/yaml_optimization.html#reference-tags