通过 Powershell 或 CLI 配置 Azure Web 应用程序部署槽

3
我正在为我们的Azure Web应用程序设置CI脚本,并希望使用部署槽来启用将应用程序分支部署到开发订阅中。我能够轻松创建部署槽,并已通过PowerShell成功配置了一些应用程序设置。目前的主要问题是,我还需要配置新创建的槽的部署选项。我们通过本地git存储库发布网站。我尝试过使用PowerShell和CLI,但在设置repoUrl参数时出现错误。我基于Microsoft的示例构建了此脚本。此外,我验证了命令语法与Azure资源管理器中显示的内容匹配。
$ResourceGroupName = "group-name"
$SubscriptionId = "guid-value-redacted"

Login-AzAccount -Subscription $SubscriptionId

# Configure environment properties

$WebAppName = "web-app-name"
$AppServicePlanName = "web-app-plan-name"
$SlotName = "branch-name"

New-AzureRmWebAppSlot -ResourceGroupName $ResourceGroupName -AppServicePlan $AppServicePlanName -Name $WebAppName -Slot $SlotName

$PropertiesObject = @{
    repoUrl = "https://$WebAppName-$SlotName.scm.azurewebsites.net/"
}
Set-AzureRmResource -PropertyObject $PropertiesObject -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/slots/sourcecontrols -ResourceName "$WebAppName/$SlotName/web" -ApiVersion 2016-08-01 -Force

所有这些都很好,直到最后一条命令,它返回了这个错误:

Set-AzureRmResource : {"Code":"BadRequest","Message":"The parameter https://web-app-name-branch-name.scm.azurewebsites.net/ has an invalid value.","Target":null,"Details":[{"Message":"The parameter 
https://web-app-name-branch-name.scm.azurewebsites.net/ has an invalid value."},{"Code":"BadRequest"},{"ErrorEntity":{"ExtendedCode":"51008","MessageTemplate":"The parameter {0} has an invalid 
value.","Parameters":["https://web-app-name-branch-name.scm.azurewebsites.net/"],"Code":"BadRequest","Message":"The parameter https://web-app-name-branch-name.scm.azurewebsites.net/ has an invalid 
value."}}],"Innererror":null}
At line:6 char:1
+ Set-AzureRmResource -PropertyObject $PropertiesObject -ResourceGroupN ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Set-AzureRmResource], ErrorResponseMessageException
    + FullyQualifiedErrorId : BadRequest,Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.SetAzureResourceCmdlet

我在这里做错了什么?我知道示例是基于从GitHub发布的,但是我提供的参数与我手动配置的另一个部署插槽使用的格式匹配。在我看来,这应该可以工作,但显然我漏掉了一些重要的细节。

2个回答

4
你可以使用Azure Power Shell和Azure CLI来完成此操作。
Power Shell。
# Configure environment properties
$ResourceGroupName = "shuiapp"
$WebAppName = "shuicli"
$AppServicePlanName = "myAppServicePlan"
$SlotName = "shuislot"

New-AzureRmWebAppSlot -ResourceGroupName $ResourceGroupName -AppServicePlan $AppServicePlanName -Name $WebAppName -Slot $SlotName

$PropertiesObject = @{
    scmType = "LocalGit";
}

Set-AzureRmResource -PropertyObject $PropertiesObject -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/slots/config -ResourceName "$WebAppName/$SlotName/web" -ApiVersion 2016-08-01 -Force

Azure Cli 2.0

az webapp deployment source config-local-git --name --resource-group --slot

看看这个 链接

希望能有所帮助。


谢谢 - 我已经解决了PowerShell的问题,但我还没有看到CLI的解决方案。感谢您的帮助! - Ben Wyatt

2

原来,如果您从本地Git进行部署,则repoUrl是一个“派生”属性。要启用本地Git部署,您需要在不同位置设置不同的属性。

Microsoft支持向我指出了另一篇指南,我按照其中的步骤配置了部署槽。

最后几行修改后的版本如下:

$PropertiesObject = @{
    scmType = "LocalGit";
}
Set-AzureRmResource -PropertyObject $PropertiesObject -ResourceGroupName $ResourceGroupName -ResourceType Microsoft.Web/sites/slots/config -ResourceName "$WebAppName/$SlotName/web" -ApiVersion 2016-08-01 -Force

事实上,我在我的实验室测试过了,得到了和你一样的结果。你也可以使用Azure Cli 2.0来完成这个任务。我已经将它作为一个答案添加了进去。希望能帮助更多的人。 - Shui shengbao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接