我在管道 (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/