Переменная внутри переменной Azure Трубопроводы - PullRequest
0 голосов
/ 25 февраля 2020

У меня проблема с использованием Azure Vault для хранения моих секретов и файла .properties для хранения секретного имени (чтобы оно не было жестко задано в конвейере) и доступ к нему позже из Azure DevOps Pipeline: .properties файла :

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

Я использую конвейер шаблонов, который читает файл и экспортирует все значения ключа = как $ (свойство) с соответствующим значением как глобальное свойство (##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))
...

Диаграмма:
enter image description here

1 Ответ

1 голос
/ 27 февраля 2020

Для этой проблемы значение вложенных переменных (например, $($(SERVER_ADMIN_SECRET_NAME))) еще не поддерживается в конвейерах. Вы можете обратиться к этому кейсу , чтобы увидеть эту точку.

Обходное решение, о котором я могу подумать, - это добавление задачи Variable Toolbox в начало этапов сборки.

В этой задаче вы можете установить для переменной значение вложенной переменной.

enter image description here

enter image description here

enter image description here

Вы можете обратиться к этому кейсу для этой задачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...