从管道变量中检索变量值的 YAML 管道定义

时间:2021-06-15 09:42:15

标签: azure-devops yaml azure-pipelines

我有一个 YAML 文件,它构成了 Azure DevOps 管道。管道本身定义了 YAML 的 variables 部分所需的四个变量...

variables:
  environmentIdentifier: "$(environmentIdentifier)"
  keyVaultSourceName: "$(keyVaultSourceName)"
  location: "$(location)"
  locationIdentifier: "$(locationIdentifier)"

肯定会为管道的每次运行设置变量,但是当它运行时,我在脚本中进一步遇到错误,表明这些变量未正确填充...

<块引用>

错误:(InvalidResourceGroup) 提供的资源组名称“rg-main-$(locationIdentifier)”具有以下无效字符:“$:”。名称只能是字母、数字、“-”、“.”、“(”、“)”或“_”。

我也试过了...

  • $env:location
  • ${{variables['location']}}

...但发生了同样的错误。

我应该如何在管道定义的 variables 部分正确声明变量,其中的值是从管道的变量中检索的?

1 个答案:

答案 0 :(得分:0)

您需要定义为:

variables:
- name: location
  value: 'Australia Southeast' 

如果您希望在稍后阶段将它们用作模板表达式,请使用:

${{ variables.location }}

如果你想在脚本中使用它们:

steps: 
- bash: echo $(location)
- powershell: echo $(location)
- script: echo $(location)

查看此 Link 和以下提取的示例以获取更多信息。

variables:
- name: one
  value: initialValue 

steps:
  - script: |
      echo ${{ variables.one }} # outputs initialValue
      echo $(one)
    displayName: First variable pass
  - bash: echo '##vso[task.setvariable variable=one]secondValue'
    displayName: Set new variable value
  - script: |
      echo ${{ variables.one }} # outputs initialValue
      echo $(one) # outputs secondValue
    displayName: Second variable pass