2017-12-19 25 views
1

PowerShell을 사용하여 Bamboo 배포 서버 스크립트 작업에서 Azure 응용 프로그램 서비스에 응용 프로그램 서비스 업데이트를 배포하는 방법을 찾으려고합니다.Bamboo 배포 서버에서 Azure kudu zipdeploy를 사용하는 방법

인증 부분에 문제가 있습니다.

참고 : 스크립트 아이디어는 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. 

내가 * .PublishSettings에서 사용자 이름과 userPWD 값을 사용하고 얻을 나는 푸른에서 응용 프로그램 서비스 배포 슬롯 설정에 다운로드 한 파일. VS2017의 게시 마법사에서이 * .PublishSettings 파일을 가져 와서 해당 슬롯에 성공적으로 게시 할 수 있습니다. PowerShell에서 그렇게 할 수없는 것 같습니다.

무엇이 여기에 있습니까?

답변

1

여기 해결책은 상당히 간단합니다. publishSettings 파일에서 Microsoft가 생성 한 사용자 이름을 사용 중이었고 사용자 이름이 $로 시작되었습니다. 따라서 PowerShell은 $ 및 첫 번째 문자를 제거했습니다. 내가 다시 접두사와 사용자 이름 접두사와 이것은 벗겨지고에서 사용자 이름을 방지. 이제 올바르게 작동합니다.

azurewebsites.net 도메인 다음에 443이 추가되었으므로 publishSettings 파일에 표시되는 방식이므로 URL이 https : //로 시작되기 때문에 실제로 필요하지는 않습니다.

+0

후미 포트 번호가 필요하지 않습니다. 또한 기본 인증 자격 증명을 URL (https : // \'$ WebAppName : \'$ PublishingPassword @ site.scm.azurewebsites.net/api/zipdeploy')에 직접 전달하여 Kudu에 대한 인증 된 전화를 걸 수 있습니다. – evilSnobu