从 YAML 模板更新变量的值

时间:2021-07-28 19:00:28

标签: bash azure azure-devops yaml azure-pipelines

我的根目录中有一个名为 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 的原始值。是否可以使用此语法更新模板变量,或者是否有其他方法?

1 个答案:

答案 0 :(得分:0)

根据您的样品,您需要注意以下几点:

  1. ${{ variables.dev }} 是模板表达式。所以它会直接使用模板中的值。所以当你使用bash脚本更新变量时,你需要使用$(dev)来获取值。

  2. ${{ 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)

结果:

enter image description here

相关问题