我的根目录中有一个名为 versions.yml
的 yaml 文件,如下所示:
variables:
dev: 0.0.0
我从 Azure DevOps 管道调用此函数,首先使用当前值,然后使用新版本更新它。
azure-pipeline.yml
variables:
- name: "Component"
value: "azure-pipelines.yml"
- template: versions.yml
...
- bash: |
"##vso[task.setvariable variable=${{ variables.dev }}]0.0.1"
我试图关注 this然而,它实际上从未更新该值。如果我运行 echo ${{ Variables.dev }}
它会返回 0.0.0
的原始值。是否可以使用此语法更新模板变量,或者是否有其他方法?
最佳答案
根据您的样本,您需要注意以下几点:
${{ Variables.dev }}
是模板表达式。所以它会直接使用模板中的值。所以当你使用bash脚本更新变量时,你需要使用$(dev)
来获取值。${{ Variables.dev }}
的值为 0.0.0,而不是变量名 dev。
因此您可以使用它在 bash 任务中设置变量名称。
您可以在bash任务中直接将变量名称设置为dev。
例如:echo "##vso[task.setvariable variable=dev;]0.0.1
请引用我的示例:
variables:
- template: variable.yml # Template reference
steps:
- script: echo ${{ variables.dev }}
- task: Bash@3
inputs:
targetType: 'inline'
script: 'echo "##vso[task.setvariable variable=dev;]0.0.1"'
- script: echo $(dev)
结果:
关于bash - 从 YAML 模板更新变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68566038/