通过Powershell或CLI配置Azure web app部署插槽

通过Powershell或CLI配置Azure web app部署插槽,powershell,azure,deployment,azure-web-app-service,azure-powershell,Powershell,Azure,Deployment,Azure Web App Service,Azure Powershell,我正在为我们的一个Azure web应用程序设置CI脚本,并且我希望使用部署槽来支持将应用程序的每个分支部署到我们的开发订阅中 我能够轻松创建部署槽,并且通过PowerShell成功配置应用程序设置 目前的主要问题是,我还需要为新创建的插槽配置部署选项。我们通过本地git存储库发布我们的站点。我已尝试使用PowerShell和CLI,但设置repoUrl参数时出错 我根据一个脚本构建了这个脚本。此外,我还验证了命令语法与Azure资源管理器中显示的语法匹配 $ResourceGroupName

我正在为我们的一个Azure web应用程序设置CI脚本,并且我希望使用部署槽来支持将应用程序的每个分支部署到我们的开发订阅中

我能够轻松创建部署槽,并且通过PowerShell成功配置应用程序设置

目前的主要问题是,我还需要为新创建的插槽配置部署选项。我们通过本地git存储库发布我们的站点。我已尝试使用PowerShell和CLI,但设置repoUrl参数时出错

我根据一个脚本构建了这个脚本。此外,我还验证了命令语法与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发布的,但是我在这里提供的参数与我为本地git部署手动配置的另一个部署槽使用的格式相匹配。在我看来,这应该是可行的,但显然我遗漏了一些重要的细节。

如果您从本地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 Power Shell和Azure CLi来完成此操作

电源外壳

# 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
看到这个了吗


希望这能有所帮助。

事实上,我在实验室进行了测试,得到了与您相同的结果。您还可以使用Azure Cli 2.0来完成此操作。我加上它作为答案。希望它能帮助更多人。谢谢-我确实找到了PowerShell解决方案,但我还没有看到CLI解决方案。我感谢你的帮助!