webentwicklung-frage-antwort-db.com.de

VSTS: Übergeben Sie Build- / Release-Variablen an die Powershell-Skriptaufgabe

Idealerweise möchte ich die Azure Web App-Anwendungseinstellungen mithilfe von Buildvariablen (in VSTS) konfigurieren. Beispiel:

VSTS Build

Wir führen unsere Veröffentlichungsaufgaben mithilfe von Powershell-Skripten aus. Zum Festlegen der App-Einstellungen kann das folgende Skript verwendet werden:

param($websiteName, $appSettings)
Set-AzureWebsite -Name $websiteName -AppSettings $appSettings

Ich könnte diese Build-Variablen manuell in eine Powershell-Script-Build-Task übergeben, wie folgt:

PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings @{"MyConnectionString" = $(MyConnectionString);"MyRandomService" = $(MyRandomService);"MyRandomServiceClient"=$(MyRandomServiceClient);"MyRandomServicePassword"=$(MyRandomServicePassword)}

Gibt es eine Möglichkeit, alle Build-Variablen in ein Skript zu übergeben, ohne dass jedes in einer Hash-Tabelle explizit angegeben werden muss?

37
Dave New

Build-Variablen werden automatisch als Umgebungsvariablen an alle PowerShell-Skripts übergeben.

Wenn Sie also eine Variable myVar im Abschnitt Variables definiert haben. Sie können als $env:myVar In Ihrem Skript darauf zugreifen. Hierbei ist zu beachten, dass . In _ Konvertiert wird. Zum Beispiel. Wenn Ihre Variable myVar.config ist, greifen Sie in Ihrem Skript als $env:myVar_config darauf zu.

Zu den verfügbaren Variablen gehören auch Variablen wie der Name des Zweigs, die Build-Nummer usw. Um alle verfügbaren Variablen anzuzeigen, führen Sie eine Dummy-Build-/Release-Definition aus, fügen Sie eine PowerShell-Task mit Inline-Typ hinzu und führen Sie Get-ChildItem Env: Aus. Dies zeigt Ihnen alle verfügbaren Umgebungsvariablen und Sie können alle Ihre benutzerdefinierten Variablen sehen.

Weitere Details finden Sie hier

75
Harshil Lodhi

Erwähnenswert ist hier, dass geheime Variablen nicht übergeben werden in Skripten als Umgebungsvariablen (env: In PS). Also nur zugänglich, wenn als Parameter für ein Skript übergeben, z. -MyPassword $(Password). Siehe https://docs.Microsoft.com/en-us/vsts/pipelines/build/variables?view=vsts&tabs=batch#secret-variables

6
Artyom

Die Variablen wurden bereits beim Start des Builds an das PowerShell-Skript übergeben. Wenn ich Ihre Frage richtig verstehe, möchten Sie diese Variablen zusammen verwenden, anstatt sie einzeln wie folgt anzugeben:

PrepareAppSettings.ps1 -websiteName "MyWebApp" -appsettings $(AllVariables)

Dann gibt es keine Möglichkeit, dies zu tun.

Wenn Sie die an das PowerShell-Skript übergebenen Zeichenfolgen reduzieren möchten, können Sie die Variable wie folgt festlegen:

Variablenname: MyRandomService | Wert: "MyRandomService" = xxxxxxxx

Dann müssen Sie nur noch das PowerShell-Skript mit dem übergebenen Variablennamen aufrufen.

3