2016-12-07 76 views
1

在VSO中发布构建时,我想将其发布到Web应用程序的临时插槽中。我正在使用NewRelic,因此我必须在部署之前停止登台环境并将AlwaysOn选项设置为false,然后将其置于开始并在部署之后启动。如何在Visual Studio Online中持续集成来更新Azure webApp插槽配置?

这是我使用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 Task上时,它可以工作... ,但在生产插槽上。

这是非常恼人的,因为它把生产放下。

您是否知道如何更新WebApp 插槽在VSO中的配置持续集成?

+0

所以你说的azure cli命令在代理上运行时并不考虑slot参数? –

+0

你有没有试过这个https://www.visualstudio.com/en-us/docs/release/examples/azure/deployment-slots-webapps – forester123

+0

@ChrisPatterson是的我猜这是一个巨大的bug,但它是在预览中。 .. – Raph

回答

1

根据您的描述,我在我身边进行了测试,我可以重现此问题。您可以按如下方式添加-vv选项以查看更详细的输出。

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

这里是我的VSO Azure的CLI任务的生成日志:

注:由于Azure的CLI任务预览。有关解决方法,你可以利用Azure Powershell任务停止/启动你的web应用程序插槽,并配置AlwaysOn的选项如下步骤:

1.添加AZURE Powsershell任务

2 。添加下面的PowerShell脚本并将其推送到您的源代码库

1)停止网络应用程序插槽使用Stop-AzureRmWebAppSlot

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

2)使用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.配置你的任务配置AlwaysOn

然后,我们可以看到下面的生成日志:

此外,我发现有关于选项停止/启动Web应用程序Azure的Web应用程序部署在一个类似issue,你可以参考一下吧。

+0

谢谢!我将按照您的步骤使用Azure Powershell任务。您能否向VSO团队报告此Azure CLI预览错误?我试过但没有答案:https://connect.microsoft.com/VisualStudio/feedback/details/3113958/azure-cli-task-stop-azure-production-slot – Raph

+0

我已经确认与VSO团队成员的这个问题。他建议你可以在github上报告有关[Microsoft/vsts-tasks issues](https://github.com/Microsoft/vsts-tasks/issues)的问题以获得快速响应。 –

相关问题