繁体   English   中英

变量内部变量 Azure 管道

[英]Variable inside variable Azure Pipelines

我在使用 Azure Vault 存储我的秘密和 .properties 文件来存储秘密名称时遇到问题(因此它不会在管道中进行硬编码)并稍后从 Azure DevOps 管道访问它:.properties 文件:

...
SERVER_ADMIN_SECRET_NAME=server-password-test
...

我正在使用模板管道读取文件并将所有 key=values 导出为 $(property) 并将相应的值作为全局属性( ##vso[task.setvariable variable=$KEY]$VAL )。

当我调用 Azure Key Vault 时,它返回密钥名称和导出变量$(server-password-test)以便稍后使用。 但是,我无法访问它,因为变量名称是另一个变量$(SERVER_ADMIN_SECRET_NAME)的值。 解决方案应该在变量$($(SERVER_ADMIN_SECRET_NAME))中使用变量,但这在 Azure 管道中不起作用。

我的管道看起来像这样:

...
- template: read_properties.yml
  parameters:
    file: config.properties

- task: AzureKeyVault@1
  inputs:
    azureSubscription: 'vault-service-connection'
    KeyVaultName: 'test-playground'
    SecretsFilter: '$(SERVER_ADMIN_SECRET_NAME)'

# TODO : How to fix this??
- task: CmdLine@2
  inputs:
    script: |
      echo $($(SERVER_ADMIN_SECRET_NAME))
...

图表:
在此处输入图像描述

对于此问题,管道中尚不支持嵌套变量的值(如$($(SERVER_ADMIN_SECRET_NAME)) )。 你可以参考这个案例来了解这一点。

我能想到的解决方法是将变量工具箱任务添加到构建步骤的顶部。

在此任务中,您可以为变量设置嵌套变量值。

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

你可以参考这个案例来完成这个任务。

这对我有用,请参阅最后一行的线索:

variables:
  azureSubscription: 'my-subscription'
  azureKeyVault: 'my-keyvault'
  testkv: $(SERVER_ADMIN_SECRET_NAME)

jobs:

- job: TestKeyVault
  displayName: Key Vault access
  continueOnError: true
  steps:
  - task: AzureKeyVault@1
    inputs:
      azureSubscription: ${{ variables.azureSubscription }}
      KeyVaultName: ${{ variables.azureKeyVault }}
      SecretsFilter: ${{ variables.testkv }}
      RunAsPreJob: true

  - task: CmdLine@2
    inputs:
      script: 'echo $(${{ variables.testkv }}) > secret.txt'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM