2017-12-19 6 views
1

Ich versuche, mithilfe von PowerShell eine Möglichkeit zur Bereitstellung eines App-Service-Updates für einen Azure-App-Service aus einer Bamboo-Bereitstellungsserver-Skriptaufgabe zu finden.So verwenden Sie Azure Kudu Zipdeploy von einem Bamboo-Bereitstellungsserver

Ich habe ein Problem mit dem Authentifizierungsteil.

Hinweis: Kredit https://markheath.net/post/deploy-azure-webapp-kudu-zip-api für die Skript-Ideen.

Unten ist mein PowerShell-Skript.

$PublishingUsername = ["The value of the userName property name in the Azure PublishSettings file"] 

$PublishingPassword = ["The value of the userPWD property name in the Azure PublishSettings file"] 

$SlotName = ["The name of the slot. I.e. qa"] 

$WebAppName = ["The name of the app service in Azure"] 

$LocalPath = ["The location of zip file that holds the VS2017 Publish Output files"] 

function Upload-ZipDeploy() { 

    $pair = "$($PublishingUsername):$($PublishingPassword)" 
    $encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair)) 
    $basicAuthValue = "Basic $encodedCreds" 

    $Headers = @{ 
     Authorization = $basicAuthValue 
    } 

    if ($SlotName -eq ""){ 
     $kuduApiUrl = "https://$WebAppName.scm.azurewebsites.net/api/zipdeploy" 
    } 
    else{ 
     $kuduApiUrl = "https://$WebAppName`-$SlotName.scm.azurewebsites.net/api/zipdeploy" 
    } 

    # use kudu deploy from zip file 
    Invoke-WebRequest -Uri $kuduApiUrl -Headers $Headers ` 
     -InFile $LocalPath -ContentType "multipart/form-data" -Method Post 


} 

Upload-ZipDeploy 

Als ich dieses Skript ausführen ich

Invoke-WebRequest : Server Error 
401 - Unauthorized: Access is denied due to invalid credentials. 
You do not have permission to view this directory or page using the 
credentials that you supplied. 

Ich bin mit den Benutzernamen und USERPWD Werte aus den * .PublishSettings Datei ich für die App-Service-Bereitstellung Slot Einstellungen in Azure heruntergeladen. Ich kann diese Datei * .PublishSettings im Veröffentlichungsassistenten in VS2017 importieren und erfolgreich auf diesem Steckplatz veröffentlichen. Ich kann es einfach nicht in PowerShell machen.

Was fehlt mir hier?

Antwort

1

Die Lösung hier war ziemlich einfach. Ich habe den von Microsoft generierten Benutzernamen aus der Datei publishSettings verwendet und dieser Benutzername hat mit $ begonnen. Also strich PowerShell die $ und ersten Zeichen. Ich habe den Benutzernamen mit einem Back-Tick vorangestellt und das verhinderte, dass der Benutzername entfernt wurde. Es funktioniert jetzt korrekt.

Ich habe auch hinzugefügt: 443 nach der Domäne azurwebsites.net, da dies die Art ist, wie es in der Datei publishSettings erscheint, aber ich bin nicht sicher, dass es tatsächlich benötigt wird, da die URL mit https: // bereits beginnt.

+0

Sie benötigen die nachstehende Portnummer nicht. Sie können auch einen authentifizierten Aufruf für Kudu durchführen, indem Sie Basic-Authentifizierungsdaten direkt in die URL eingeben: https: // \ $ WebAppName: \ $ PublishingPassword @ site.scm.azurewebsites.net/api/zipdeploy – evilSnobu

Verwandte Themen