如何从Bamboo部署服务器使用Azure kudu zipdeploy

时间:2017-12-19 21:23:42

标签: powershell azure bamboo kudu azure-app-service-envrmnt

我正在尝试使用PowerShell从Bamboo部署服务器脚本任务中找到一种将应用服务更新部署到Azure应用服务的方法。

我遇到了身份验证部分的问题。

注意:感谢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.

我正在使用我为Azure中的应用服务部署插槽设置下载的* .PublishSettings文件中的userName和userPWD值。我可以在VS2017的发布向导中导入同样的* .PublishSettings文件,并成功发布到该插槽。我似乎无法在PowerShell中做到这一点。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

这里的解决方案非常简单。我使用的是来自publishSettings文件的Microsoft生成的用户名,该用户名以$开头。因此,PowerShell正在剥离$和第一个字符。我用后缀勾选了用户名,这阻止了用户名被剥离。它现在正常工作。

我还在azurewebsites.net域之后添加了:443,因为它出现在publishSettings文件中,但我不确定它实际上是否需要,因为url以https://已经开始。