#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. Это связано с тем, что это секрет, потому что он отлично работает с обычными переменными. Я прочитал несколько статей о том, как по-разному используются секреты, но не смог применить их в том, что я делаю.
Я включаю скриншот, чтобы помочь объяснить, где я это вижу.
Ответ №1:
Я запустил конвейер выпуска с этим:
[
{
"name": "MysqlCredentials",
"value": "$(MySQl_ConnectionString)",
"type": "MySql",
"slotSetting": false
}
]
Наличие переменной, заданной в переменных:
А потом я получил:
Поэтому, если вы его не заменили, это может означать, что у вас не определена переменная.
Я сделал это секретом:
И это все еще работает:
Комментарии:
1. Если вы сделаете эту переменную «безопасной», она не будет работать. Попробуйте щелкнуть блокировку переменной, а затем запустить ее. Для меня, когда это делается в секрете, это не трансформируется, и это по замыслу из того, что я прочитал
2. Хм, интересно, почему мой не работает. Собираюсь вернуться, чтобы попробовать сейчас
3. Вы на 100% правы. Я пробовал это несколько раз, но, должно быть, по пути допустил небольшую ошибку или опечатку, из-за чего проблема казалась больше, чем была на самом деле. Спасибо вам за помощь и проверку на вменяемость
4. @washburnj Не волнуйся. Я счастлив, что смог вам помочь. Не могли бы вы также подумать о том, чтобы поддержать мой ответ, если бы это было полезно для вас?
Ответ №2:
Я нашел решение, которое сработало в моем сценарии. Я поместил строку подключения в хранилище и добавил задачу Хранилища ключей Azure прямо перед задачей Настройки службы приложений Azure, а затем сработала стандартная переменная sub.