如何在 Azure Pipelines yml 模板中使用变量组?

How to use a variable group in a Azure Pipelines yml template?

所以我正在研究一堆管道,我已经使用 yml 模板设置了所有内容。但是,我很难在模板步骤中扩展受保护的变量。我试过通过正常方式传递受保护的变量,但它们似乎没有得到扩展。然后我尝试使用一个变量组,据推测我可以直接在模板内部引用它。我说应该是因为微软在他们的网站上这么说 https://docs.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups?view=azure-devops&tabs=yaml:

"您也可以在模板中引用变量组。在模板中variables.yml,引用组my-variable-group。变量组包含一个名为myhello的变量。"

variables:
- group: my-variable-group

但是,每当我在模板代码中包含 variables 部分时,Azure DevOps 在 运行 管道之前解析 yml 时立即抱怨它。它吐出以下消息:

/ymls/my-template@my-repo(行:1,列:1):意外值 'variables'

我不坚持使用变量组,我只是想在我的 yml 模板中扩展我的受保护变量。有人知道怎么做吗???

非常感谢任何帮助!

您应该在主管道而不是模板中定义变量组。然后你可以调用你的模板并使用你定义的变量。

例如,假设您的 main.yml 调用 template.yml

您应该在 main.yml

上定义以下变量组
variables:
- group: my-variable-group

并调用 template.yml

上的变量
$(MY_VARIABLE)

https://thomasthornton.cloud/2021/09/02/referencing-variable-groups-in-azure-devops-pipeline-templates/

终于想通了。感谢@GeralexGR。事实证明,当您在主管道 yml 中引用变量组时,您会自动在模板 yml 中访问它。但是对于正常的脚本步骤,您仍然必须显式传递它。

然后看起来 s.th。像这样:

main-pipeline.yml:

variables:
- group: my-variable-group
...
jobs:
- job: my-job
  steps:
  - template: ymls/my-template.yml@my-repo
  # no need to pass in the variable group s parameter

my-template.yml:

steps:
- task: ShellScript@2
  inputs:
    scriptPath: 'my-script.sh'
    args: '$(my-secret-variable)'