In this post let's see how to read variables in a Variable Group and deploy them to Azure App Service as app settings from a Classic Azure DevOps Release Pipeline.
In the release pipeline I have Azure CLI task added and the release pipeline is running on Azure Hosted windows-latest agent.
|
Release Pipeline |
Acquire a PAT (Personal Access Token) and set it.
$PAT = "<YOUR_PAT>"
$env:AZURE_DEVOPS_EXT_PAT = $PAT
Now set the default organization and project for az devops command.
az devops configure --defaults `
organization=https://dev.azure.com/<YOUR_ORGANIZATION>/ `
project=<YOUR_PROJECT>
Get list of variables in the variable group by Variable Group Id. You can find Variable Group Id in the URL of the Variable Group detail page.
$variablesJson = az pipelines variable-group variable list ` --group-id <YOUR_VARIABLE_GROUP_ID> `
--org https://dev.azure.com/<YOUR_ORGANIZATION>/ `
--project <YOUR_PROJECT>
If we output $variablesJson, it would be something like following.
{
"SomeOptions__Key1": {
"isSecret": null,
"value": "<Value1>"
},
"SomeOptions__Key2": {
"isSecret": null,
"value": "<Value2>"
}
}
Convert the $variablesJson to app settings format that Azure App Service expects.
$variablesAppSettings = $variablesJson `
| ConvertFrom-Json `
| ForEach-Object { $_.PSObject.Properties } `
| ForEach-Object ` {
$key = $_.Name
$value = $_.Value.value
@{
name = $key;
slotSetting = $false;
value = $value
}
}
Save the app settings to a temporary file.
ConvertTo-Json $variablesAppSettings | Out-File "$(System.DefaultWorkingDirectory)\appsettings-updated.json"
appsettings-updated.json would look like below.
[
{
"name": "SomeOptions__Key1",
"value": "<Value1>",
"slotSetting": false
},
{
"name": "SomeOptions__Key2",
"value": "<Value2>",
"slotSetting": false
}
]
Now finally update the app settings in the web app.
$resourceGroup = "<resourceGroup>"
$webAppName = "<webAppName>"
az webapp config appsettings set `
--resource-group $resourceGroup `
--name $webAppName `
--settings "@$(System.DefaultWorkingDirectory)\appsettings-updated.json"
Hope this helps.
Happy Coding.
No comments:
Post a Comment