bash - 从 YAML 模板更新变量的值

标签 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. ${{ 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

关于bash - 从 YAML 模板更新变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68566038/

相关文章:

linux - 列出目录 1 中但不在目录 2 中的文件,反之亦然?

bash - 多次通过 stdin 将参数传递给 shell 脚本

c# - 阅读服务总线主题订阅死信队列 (DLQ) C# 的最佳方式

Azure 数据流创建/管理身份关系 key

bash - Shell 脚本反斜杠和空格参数

bash - 向数组中添加元素

azure - 创建脚本以对域和网站证书进行监控

azure - 限制 API 调用,Microsoft 认知服务 Bing 新闻 API

azure - 为 SourceVersion 指定的值不是有效的提交 ID

azure - 使用 Azure Pipeline 在 APIM 中导入 API