Dan*_*Dan 5 azure-devops azure-pipelines azure-pipelines-tasks azure-pipelines-yaml
所以我正在研究一堆管道,并且我已经使用 yml 模板设置了所有内容。然而,我很难在模板步骤中扩展受保护的变量。我尝试通过正常方式传递受保护的变量,但它们似乎没有得到扩展。然后我尝试使用变量组,据说我可以直接在模板内部引用它。我说据说是因为微软在他们的网站上这么说https://learn.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
Run Code Online (Sandbox Code Playgroud)
但是,每当我variables在模板代码中包含一个部分时,Azure DevOps 会在运行管道之前解析 yml 时立即抱怨它。它会输出以下消息:
/ymls/my-template@my-repo(行:1,列:1):意外值“变量”
我不坚持使用变量组,我只是想在我的 yml 模板中扩展受保护的变量。有人知道该怎么做吗???
非常感谢任何帮助!
Ger*_*xGR 15
您应该在主管道上而不是在模板中定义变量组。然后您可以调用模板并使用您定义的变量。
例如,假设您有main.yml,它调用template.yml
您应该定义以下变量组main.yml
variables:
- group: my-variable-group
Run Code Online (Sandbox Code Playgroud)
并在template.yml上调用该变量
$(MY_VARIABLE)
Run Code Online (Sandbox Code Playgroud)
终于想通了。感谢@GeralexGR。事实证明,当您在主管道 yml 中引用变量组时,您会自动在模板 yml 中访问它。但对于正常的脚本步骤,您仍然必须显式传递它。
然后它看起来…… 像这样:
主管道.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
Run Code Online (Sandbox Code Playgroud)
我的模板.yml:
steps:
- task: ShellScript@2
inputs:
scriptPath: 'my-script.sh'
args: '$(my-secret-variable)'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31467 次 |
| 最近记录: |