Я хочу, чтобы мой конвейер Azure DevOps развертывал все конфигурации приложений-функций без ручного ввода их в конвейер DevOps. Как это сделать?
У нас есть код C#, который развертывается в приложениях-функциях Azure. Но мы добавляем конфигурации функциональных приложений вручную в конвейер Azure Devops.
На данный момент мы вводим конфигурации в задачу развертывания функции Azure в конвейере, но я хочу, чтобы это было, поскольку оно должно быть получено непосредственно из исходного кода, не вводя их в конвейер.
Нам нужно направление, чтобы понять, как мы можем автоматизировать параметры конфигурации с помощью конвейеров ADO. Это возможно ?
Нет, Руи, здесь мы также вводим ключ1:значение1, ключ2:значение2 вручную в конвейер. У меня 250+ конфигов, нужно ли добавлять все эти 250 конфигов вручную?? Я не хочу этого делать... есть ли другой способ развертывания напрямую из исходного кода?? потому что эти 250 конфигураций не изменятся при переходе от одного окружения к другому. они будут статическими во всех средах от разработки до разработки. Есть ли способ?
@suryaTeja В соответствии с вашими требованиями я поделился сценарием для чтения настроек приложения в файле appsettings.json и установки их в приложении Azure Function. Вы можете проверить мой ответ.


Вы можете добавить задачу для запуска сценария Azure CLI, чтобы массово редактировать настройки приложения:
az webapp config appsettings set \
--resource-group <group-name> \
--name <app-name> \
--settings "@settings.json"
Формат файла, необходимый для settings.json, представляет собой массив настроек JSON, в котором поле настройки слота является необязательным.
[
{
"name": "key1",
"slotSetting": false,
"value": "value1"
},
{
"name": "key2",
"value": "value2"
}
]
Для удобства вы можете сохранить существующие настройки в файл JSON с помощью az webapp config appsettings list. Следующий пример можно запустить в Bash:
# Save the settings
az webapp config appsettings list --name <app-name> --resource-group <group-name> > settings.json
# Edit the JSON file
...
# Update the app with the JSON file
az webapp config appsettings set --resource-group <group-name> --name <app-name> --settings @settings.json
Это нормально, но есть ли другой способ, который напрямую извлечет все конфигурации из файла appsettings.json и развернет все эти конфигурации непосредственно в приложении-функции??
Привет, Руи Джаримба! Наконец-то я выбрал это решение. Все работает нормально, спасибо
Файл appsettings.json нельзя использовать напрямую в Azure CLI: az webapp config appsettings set.
Есть ли другой способ, который напрямую извлечет все конфигурации из файла appsettings.json и развернет все эти конфигурации непосредственно в приложении-функции?
Чтобы удовлетворить ваши требования, вы можете использовать скрипт для зацикливания значения настроек приложения в файле appsettings.json. Затем вы можете добавить их в массив и использовать его в команде Azure CLI.
Вот пример:
steps:
- task: AzureCLI@2
inputs:
azureSubscription: 'xxx'
scriptType: 'ps'
scriptLocation: 'inlineScript'
inlineScript: |
$json = Get-Content '$(build.sourcesdirectory)/AzureFunctionAppSettings/Startup/appsettings.json' | Out-String | ConvertFrom-Json
$appsettingnames = $json.values | Get-Member | Where {$_.MemberType -like 'NoteProperty'} | Select-Object -Property name
$appsettingslist = @()
ForEach ($appsettingname in $appsettingnames.name)
{
$appsettingvalue = $json.values.$appsettingname
$singleappsetting = "`"$appsettingname=$appsettingvalue`""
$appsettingslist = $appsettingslist + $singleappsetting
}
echo $appsettingslist
az webapp config appsettings set --resource-group resourcegroupname --name functionappname --settings $appsettingslist
Образец результата:
Привет, Кевин, спасибо, что поделились этим. Несмотря на то, что я не пробовал ваше решение, но решение, предоставленное Руи ниже, работает нормально, нам не нужно перебирать массив в соответствии с решением Руи. Спасибо
Это помогает? stackoverflow.com/questions/61598490/…