Как использовать Azure kudu zipdeploy с сервера развертывания Bamboo

Я пытаюсь найти способ развернуть обновление службы приложений в службе приложений Azure из задачи сценария сервера развертывания Bamboo с помощью PowerShell.

У меня проблема с аутентификационной частью.

Примечание. Кредит https://markheath.net/post/deploy-azure-webapp-kudu-zip-api за идеи сценария.

Ниже мой сценарий PowerShell.

$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

Когда я запускаю этот скрипт, я получаю

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.

Я использую значения userName и userPWD из файла * .PublishSettings, который я скачал для настроек слота развертывания службы приложений в Azure. Я могу импортировать тот же файл * .PublishSettings в мастер публикации в VS2017 и успешно опубликовать его в этом слоте. Я просто не могу сделать это в PowerShell.

Что мне здесь не хватает?


person EiEiGuy    schedule 19.12.2017    source источник


Ответы (1)


Решение здесь было довольно простым. Я использовал имя пользователя, созданное Microsoft из файла publishSettings, и это имя начиналось с символа $. Итак, PowerShell удалял символы $ и первые символы. Я поставил перед именем пользователя обратную галочку, и это предотвратило удаление имени пользователя. Теперь он работает правильно.

Я также добавил: 443 после домена azurewebsites.net, поскольку именно так он отображается в файле publishSettings, но я не уверен, что он действительно нужен, поскольку URL-адрес уже начинается с https: //.

person EiEiGuy    schedule 21.12.2017
comment
Вам не нужен конечный номер порта. Вы также можете выполнить аутентифицированный вызов Kudu, передав учетные данные Basic auth прямо в URL: https://`$WebAppName:`[email protected]/api/zipdeploy - person evilSnobu; 22.12.2017