如何在 Visual Studio 在线持续集成中更新 Azure webApp 插槽配置?

How to update Azure webApp slot configuration in Visual Studio Online continuous integration?

在 VSO 中发布构建时,我想在 webapp 暂存槽中发布它。我正在使用 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 持续集成中更新 WebApp slot 配置吗?

根据你的描述,我在自己这边测试过,可以重现这个问题。您可以按如下方式添加 -vv 选项以查看更详细的输出。

azure webapp stop --slot <slot name> <resource-group-name> <your-webapp-name> -vv

这是来自我的 VSO 的 Azure CLI 任务的构建日志:

注意: 由于 Azure CLI 任务处于预览状态。解决方法是,您可以利用 Azure Powershell 任务到 stop/start 您的网络应用程序插槽,并按照以下步骤配置 AlwaysOn 选项:

1.添加 AZURE Powsershell 任务

2。添加以下 powershell 脚本并将其推送到您的源存储库

1) 使用 Stop-AzureRmWebAppSlot

停止网络应用槽

stop-azurermwebappslot -name "<webapp-name>" -slot "<webapp-slot-name>" -resourcegroupname "<resourcegroup-name>"

2) 使用 Set-AzureRmResource

配置 AlwaysOn

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。配置您的任务

然后我们可以看到如下构建日志:

另外,我发现在部署Azure Web App的过程中,关于stop/start web app的选项也有类似的issue,你可以参考一下。