【问题标题】:GitLab: extend `!reference` with extra values in `variables`GitLab:在“变量”中使用额外的值扩展“!reference”
【发布时间】:2021-12-29 08:53:40
【问题描述】:

如何在variables 块中使用!reference,然后扩展条目列表?

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

variables:
  !reference [.common_variables, variables]
  FOO: "bar"

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

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

附:请注意,这个问题专门针对!reference

  • Yaml 锚点超出了此问题的范围,因为我想将 .common_variables 放入我的管道中包含的单独文件中。
  • extends: 机制超出了这个问题的范围。它确实有效,但它有一个奇怪的行为,即在环境中也会获得一个extends 变量,请参阅GitLab: use `extends` in `variables`

【问题讨论】:

    标签: gitlab gitlab-ci


    【解决方案1】:
    variables: !reference [.common_variables, variables]
    

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

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

    例如:

    在'variables.gitlab-ci.yml'中:

    .common_variables: &common_variables
         COMMON_VAR: value
    
    .variables:Example-job
        variables:
            <<: *common_variables
            FOO: "bar"
    

    在“.gitlab.ci.yml”中:

    Example-job:
        variables: !reference [".variables:Example-job", "variables"]
        script:
            ...
    

    这是 gitlab 团队为解决此限制而使用的管道解决方案,see rules setup

    【讨论】:

    • 很遗憾这是唯一的方法......缺点是我想将.common_variables 放在一个单独的“模板”存储库中,以便在多个“应用程序”项目之间共享。因此我不能将.variables:Example-job.common_variables 放在同一个文件中,因为对于“应用程序”特定变量的任何更改,都需要更改共享的“模板”
    • 在这种情况下,您可以将外部模板中的!reference ['.common_variables', 'variables'] 转换为'variables.gitlab-ci.yml' 中的.internal_common_variables,然后使用锚点&lt;&lt;: 来将它们拉入.variables:Example-job。不确定这是否可行,但可能值得一试。
    • 好主意。谢谢!
    【解决方案2】:
    variables:
      !reference [.common_variables, variables]
      FOO: "bar"
    

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

    variables:
        MY_VAR: !reference [.common_variables, variables]
    

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

    【讨论】:

    • 查看原始问题,该问题明确指出 GitLab 抱怨第一种方法,而第二种方法允许配置单个值,但不能插入变量块
    猜你喜欢
    • 1970-01-01
    • 2014-12-25
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 2019-02-23
    相关资源
    最近更新 更多