【问题标题】:Using a pipeline variable to define which variable group to use in YAML script使用管道变量定义要在 YAML 脚本中使用的变量组
【发布时间】:2022-01-01 09:47:09
【问题描述】:

我实际上想要做的是:在不同的环境中使用具有相同部署脚本的管道。每个环境都有一个变量组,其中包含部署所需的设置。

但似乎很难在 YAML 文件中指定非硬编码的变量组。我希望管道有一个管道变量来指定要使用的变量组。

我发现了一些使用模板似乎可以实现的指针。如果这是唯一的方法,那就这样吧。但我希望有更直接的方法。

【问题讨论】:

  • 您是否尝试在参数中添加变量组名称?那么你可以将变量组名替换为接收到的参数的名称
  • @Bruno 谢谢 - 使用参数可能有效。但是问题依然存在——如何在yml文件之外定义参数。我想定义几个管道,它们都使用相同的 yml 文件,但使用不同的变量组以针对不同的环境。

标签: azure-devops azure-pipelines


【解决方案1】:

这里我们通过参数environment驱动变量组值

cat mypipeline.yaml

variables:
  - ${{ if eq(parameters.environment, 'dev') }}:
      - group: myvariable-group-dev
  - ${{ if eq(parameters.environment, 'stg') }}:
      - group: myvariable-group-stg
  - name: environment
    value: ${{ parameters.environment }}

parameters:
  - name: environment
    displayName: Environment
    type: string
    default: dev
    values:
      - dev
      - stg

      

可以是管道模板或只是管道

【讨论】:

  • 这应该是正确的答案。
  • 我还没有看到这个变种。但是,似乎我们仍然必须将所有变量组/环境包含到 yml 文件中的 if 语句中。因此,如果我们稍后添加环境,我们将不得不更改所有管道的 yml 文件。
【解决方案2】:

在 YAML 中,您可以使用“组”来指定要使用的变量组。您可以在同一管道中引用多个变量组。如果多个变量组包含同一个变量,则 YAML 文件中最后包含的变量组设置变量的值。

看起来像这样:

变量:

-group: my-first-variable-group

-group: my-second-variable-group

更多信息请参考Use a variable group

如果这不能满足你的需求,我建议你使用Variable templates

【讨论】:

  • 感谢您的回复。我已经在使用变量组,但我想在 yml 文件之外定义要使用的变量组(以避免每个环境有一个 yml 文件)。所以恐怕你的建议并不能帮助我解决这个挑战。
猜你喜欢
  • 2022-07-21
  • 2021-08-31
  • 2021-05-12
  • 2020-05-14
  • 2021-08-05
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 2019-09-24
相关资源
最近更新 更多