azure-devops - 值为 yaml 中变量名的变量

标签 azure-devops yaml azure-pipelines azure-pipelines-yaml

我在管道 (Azure DevOps) 中有以下任务。第一个任务使用变量 $(mySecretName) 从 KeyVault 读取 secret ,其值为 secret-name。第二个任务需要将读取的 secret 值传递给 ARM:

- task: AzureKeyVault@2
  displayName: 'Read secret'
  inputs:
     azureSubscription: $(mySubscription)
     KeyVaultName: $(myKeyVault)
     SecretsFilter: $(mySecretName)
     RunAsPreJob: false

- task: AzureResourceGroupDeployment@3
  displayName: 'Use secret value'
  inputs:
     resourceGroupName: $(myResourceGroup)
     location: $(myLocation)
     azureResourceManagerConnection: $(mySubscription)
     templateLocation: 'Linked artifact'
     csmFile: '$(Pipeline.Workspace)/cd-template.json'
     overrideParameters: >
        -secretValue "$($(mySecretName))"
     deploymentMode: 'Incremental'

-secretValue "$($(mySecretName))" 我试图以这种方式解决,但显然它不起作用: $(mySecretName) -> $( secret 名称) -> secret 值。如果我使用 $(secret-name) 它将起作用,但我需要使用 $(mySecretName) 因为名称会根据环境而变化。

是否有任何解决方案可以让我获取名称是另一个变量的值的变量的值?

最佳答案

在您的 YAML 示例中,您正在使用嵌套变量 $($(mySecretName))。管道中尚未支持它。

要实现您的要求,您可以使用扩展程序中的变量集任务:Variable Toolbox .

您可以在 AzureResourceGroupDeployment 任务之前添加变量集任务。

例如:

steps
- task: VariableSetTask@2
  displayName: 'Set variable: kevin to: ''$($(test))'''
  inputs:
    variableName: NewVariable
    Value: '$($(mySecretName))'

- task: AzureResourceGroupDeployment@3
  displayName: 'Use secret value'
  inputs:
     resourceGroupName: $(myResourceGroup)
     location: $(myLocation)
     azureResourceManagerConnection: $(mySubscription)
     templateLocation: 'Linked artifact'
     csmFile: '$(Pipeline.Workspace)/cd-template.json'
     overrideParameters: >
        -secretValue "$(NewVariable)"
     deploymentMode: 'Incremental'

关于azure-devops - 值为 yaml 中变量名的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72623265/

相关文章:

powershell - 我可以在 Azure 测试计划中自动化 pester 测试吗?

tfs - 使用 DotNet 核心以编程方式创建新的 TFS 分支

azure-devops - Azure DevOps Pipelines - 在每个循环中将变量与包装的作业变量组合

yaml - Kubernetes ConfigMap 自动将 Literal 更改为 Folded Block Scalar

azure - 如何在 Azure Pipelines Pull 请求中重新部署版本?

ios - Azure Build Pipeline 没有使用 Xcode 注册的帐户。将您的开发者帐户添加到 Xcode

Azure DevOps REST API - 获取作业的代理池?

linux - 模块无法启动 Ansible

azure-devops - Azure DevOps - 如何在不重新创建新管道的情况下更新管道 repo 源?

azure - 如何在azure devops中转换dev、uat、prod环境的.xml文件值?