首页 > 解决方案 > Azure Devops Pipeline 中的变量组 yaml 变量表达式

问题描述

我在使用 AzureKeyVault 任务的变量表达式时遇到了困难。azureSubscription 和 KeyVaultName 值表达式都没有被解析为在变量组中具有变量。如果我在 yaml 中以任何方式手动定义这些变量,它就会起作用。在我在阶段开始时导入的 azure-pipelines.yml 或模板 variables_test.yml 中。

我在文档中读到,变量组中的变量应该像这样 $(var) 使用,但是它会抛出一个错误,说像 '$(var)' 这样的订阅不存在。

模板:azure-pipelines.yml:

- stage: Test

  variables:
  - template: variables_Test.yml  # Template reference
  - group: testVariableGroup

  dependsOn: []

  jobs:

  - job: Test
    
    steps:

    - task: AzureKeyVault@1
      inputs:
        azureSubscription: ${{ variables.spn_kv_app }}
        KeyVaultName: ${{ variables.keyVaultName }}
        SecretsFilter: '*'

在登台的日志中,我可以看到从变量组中设置的变量:

Job preparation parameters
Variables:
  keyVaultName: $[ variablegroups.testVariableGroup.keyVaultName ]
  resourceGroupName: $[ variablegroups.testVariableGroup.resourceGroupName ]
  spn_cd_app: $[ variablegroups.testVariableGroup.spn_cd_app ]
  spn_kv_app: $[ variablegroups.testVariableGroup.spn_kv_app ]
  storageAccountName: $[ variablegroups.testVariableGroup.storageAccountName ]

需要注意的重要一点是,这些变量未设置为变量组中的机密。

PS。对于任何有兴趣的人。我创建了票:

https://github.com/MicrosoftDocs/vsts-docs/issues/7586

https://developercommunity.visualstudio.com/content/problem/949342/azuresubscription-serviceconnection.html

如果有任何事情会得到解决,我会发布答案。

标签: azureazure-devopsyamlazure-pipelinesazure-pipelines-yaml

解决方案


Azure Devops Pipeline 中的变量组 yaml 变量表达式

它应该与$(var). 尝试检查以下测试 yaml 文件:

主要 Yaml:

trigger:
- master

variables:
- group: Test2

pool:
  vmImage: 'windows-latest'

stages:

- template: azure-pipelines.yml

模板azure-pipelines.yml

stages:
- stage: Test

  dependsOn: []

  jobs:

  - job: Test

    steps:

    - task: AzureKeyVault@1
      inputs:
        azureSubscription: $(spn_kv_app)
        KeyVaultName: $(keyVaultName)
        SecretsFilter: '*'

还有我的变量组:

在此处输入图像描述

作为测试结果:

在此处输入图像描述

所以,它在我这边工作得很好。请检查您的变量组名称和变量名称。

希望这可以帮助。


推荐阅读