Как использовать секреты в конвейере выпуска строки подключения Azure — Задача «Параметры службы приложений Azure»

#azure #azure-devops #azure-pipelines-release-pipeline

Вопрос:

Я использую задачу Настройки службы приложений Azure в конвейере выпуска для веб-приложения. Мне нужно установить строку подключения.

Согласно значку справки, он ожидает синтаксис JSON

  {
    "name": "key1",
    "value": "valueabcd",
    "type": "MySql",
    "slotSetting": false
   }
 

Я хотел бы извлечь «значение» либо из группы переменных, которую я связал с хранилищем ключей Azure, либо из KeyVault, либо даже просто из переменной конвейера. Я просто хочу, чтобы это было безопасно.

Проблема, с которой я сталкиваюсь, заключается в том, как передать переменную в JSON, если это секрет. Если я сделаю что-то подобное

    {
    "name": "ConnectionStringName",
    "value": "$(DBConnectionString)",
    "type": "SQLAzure",
    "slotSetting": false
   }
 

Тогда строка подключения буквально равна $(DBConnectionString). Вы не можете удалить кавычки, потому что тогда это неправильный JSON. Это связано с тем, что это секрет, потому что он отлично работает с обычными переменными. Я прочитал несколько статей о том, как по-разному используются секреты, но не смог применить их в том, что я делаю.

Я включаю скриншот, чтобы помочь объяснить, где я это вижу.

Снимок экрана из задачи конвейера выпуска Azure

Ответ №1:

Я запустил конвейер выпуска с этим:

 [
        {
          "name": "MysqlCredentials",
          "value": "$(MySQl_ConnectionString)",
          "type": "MySql",
          "slotSetting": false
        }
      ]
 

введите описание изображения здесь

Наличие переменной, заданной в переменных:

введите описание изображения здесь

А потом я получил:

введите описание изображения здесь

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

Я сделал это секретом:

введите описание изображения здесь

И это все еще работает:

введите описание изображения здесь

Комментарии:

1. Если вы сделаете эту переменную «безопасной», она не будет работать. Попробуйте щелкнуть блокировку переменной, а затем запустить ее. Для меня, когда это делается в секрете, это не трансформируется, и это по замыслу из того, что я прочитал

2. Хм, интересно, почему мой не работает. Собираюсь вернуться, чтобы попробовать сейчас

3. Вы на 100% правы. Я пробовал это несколько раз, но, должно быть, по пути допустил небольшую ошибку или опечатку, из-за чего проблема казалась больше, чем была на самом деле. Спасибо вам за помощь и проверку на вменяемость

4. @washburnj Не волнуйся. Я счастлив, что смог вам помочь. Не могли бы вы также подумать о том, чтобы поддержать мой ответ, если бы это было полезно для вас?

Ответ №2:

Я нашел решение, которое сработало в моем сценарии. Я поместил строку подключения в хранилище и добавил задачу Хранилища ключей Azure прямо перед задачей Настройки службы приложений Azure, а затем сработала стандартная переменная sub.