Idéalement, je souhaiterais configurer les paramètres de l'application Azure Web App à l'aide de variables de construction (sur VSTS), par exemple:
Nous effectuons nos tâches de publication à l'aide de scripts Powershell. Afin de définir les paramètres de l'application, le script suivant peut être utilisé:
param($websiteName, $appSettings)
Set-AzureWebsite -Name $websiteName -AppSettings $appSettings
Je pourrais passer ces variables de construction manuellement dans une tâche de construction de script Powershell, comme suit:
PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings @{"MyConnectionString" = $(MyConnectionString);"MyRandomService" = $(MyRandomService);"MyRandomServiceClient"=$(MyRandomServiceClient);"MyRandomServicePassword"=$(MyRandomServicePassword)}
Existe-t-il un moyen de passer toutes les variables de construction dans un script sans avoir à spécifier explicitement chacune d'elles dans une table de hachage?
Les variables de construction sont automatiquement transmises à tous les scripts PowerShell en tant que variables d'environnement.
Donc, si vous avez défini une variable myVar
dans la section Variables
. Vous pouvez y accéder en tant que $env:myVar
dans votre script. Une chose à noter ici est que .
est converti en un _
. Pour par exemple. si votre variable est myVar.config
, vous y aurez accès dans votre script en tant que $env:myVar_config
.
Les variables disponibles incluent également des variables telles que le nom de la branche, le numéro de build, etc. Pour voir toutes les variables disponibles, exécutez une définition de build/release factice, ajoutez une tâche PowerShell de type en ligne et exécutez Get-ChildItem Env:
. Cela vous montrera toutes les variables d'environnement disponibles et vous pourrez voir toutes vos variables définies personnalisées.
Plus de détails sont disponibles ici
Il convient de mentionner ici que les variables secrètes ne sont pas transmises aux scripts en tant que variables d’environnement (env:
Dans PS). Donc accessible uniquement si passé en tant que paramètres pour un script, par exemple. -MyPassword $(Password)
. Voir https://docs.Microsoft.com/en-us/vsts/pipelines/build/variables?view=vsts&tabs=batch#secret-variables
Les variables ont déjà été transmises au script PowerShell au démarrage de la génération. Si je comprends bien votre question, vous souhaitez utiliser ces variables ensemble au lieu de les spécifier une à une, comme suit:
PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings $(AllVariables)
Ensuite, il n'y a pas moyen de faire cela.
Si vous souhaitez réduire les chaînes transmises au script PowerShell, vous pouvez définir la variable comme suit:
NomVariable: MyRandomService | Valeur: "MyRandomService" = xxxxxxxx
Ensuite, il vous suffit d'appeler le script PowerShell avec le nom de variable transmis.