在 VSO 中发布构建版本时,我想在 Web 应用程序暂存槽中发布它。我正在使用 NewRelic,因此我必须在部署之前停止暂存环境,并将 AlwaysOn 选项设置为 false,然后在部署后将其启动并启动。
这是我在部署任务之前使用 Azure CLI 任务所做的事情:
call azure webapp config set --slot staging Default-Web-WestEurope instanceName --alwayson false
call azure webapp stop --slot staging Default-Web-WestEurope instanceName
当我在自己的桌面上的 Azure CLI 上启动这些命令时,效果很好。但是,当我将此脚本放在 VSO 上的 Azure CLI 任务上时,它可以工作......但在生产槽上。
这非常烦人,因为它降低了产量。
你知道如何在VSO持续集成中更新WebAppslot配置吗?
最佳答案
根据您的描述,我在我这边测试了一下,可以重现这个问题。您可以添加-vv
选项如下以查看更详细的输出。
azure webapp stop --slot <slot name> <resource-group-name> <your-webapp-name> -vv
以下是我的 VSO 中的 Azure CLI 任务的构建日志:
注意:由于 Azure CLI 任务处于预览阶段。对于解决方法,您可以利用 Azure Powershell
任务停止/启动您的网络应用程序插槽并配置 AlwaysOn 选项,步骤如下:
<强>1。添加 AZURE Powsershell 任务
<强>2。添加以下 powershell 脚本并将其推送到您的源存储库
1) 使用 Stop-AzureRmWebAppSlot 停止 Web 应用程序插槽
stop-azurermwebappslot -name "<webapp-name>" -slot "<webapp-slot-name>" -resourcegroupname "<resourcegroup-name>"
2) 配置AlwaysOn
通过使用 Set-AzureRmResource
Set-AzureRmResource -resourcename "<webapp-name>\slots\<webapp-slot-name>/web" -ResourceGroupName "<resourcegroup-name>" -ResourceType "Microsoft.Web/sites/config" -ApiVersion 2015-08-01 -propertyobject @{alwaysOn = $false;} -v -force
<强>3。配置您的任务
然后我们可以看到以下构建日志:
另外,我发现有一个类似的issue关于Azure Web App部署期间停止/启动Web应用程序的选项,您可以引用它。
关于azure - 如何在 Visual Studio Online 持续集成中更新 Azure webApp 插槽配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41018810/