web-dev-qa-db-fra.com

VSTS: transmettez les variables de construction / édition à la tâche de script Powershell

Idéalement, je souhaiterais configurer les paramètres de l'application Azure Web App à l'aide de variables de construction (sur VSTS), par exemple:

VSTS Build

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?

37
Dave New

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

75
Harshil Lodhi

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

6
Artyom

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.

3