使用 TFS 在 azure 中启动自动交换

Start an Auto Swap in azure using TFS

我正在使用 VSO 持续部署到 Azure。

我有三个插槽:

问题是我的部署是使用 FTP 完成的(我不能这样做,因为它是 Asp.net Core 1.0 应用程序),所以当我部署到 AutoSwap 时,未检测到它作为实际部署,因此不会对生产进行自动交换。

我的问题:我可以从 TFS 任务调用任何 powershell 命令来启动自动交换吗? (一个命令,例如告诉部署已经完成,我可以在 FTP 上传结束时调用)?

编辑 我已经找到并尝试过这个,但它什么也没做(它不会失败):

Switch-AzureWebsiteSlot -Name "MyApp" -Slot1 "production" -Slot2 "AutoSwap" -Force

尝试使用 Move-AzureDeployment,它可以交换生产和暂存中的部署。

Parameter Set: Default
Move-AzureDeployment [-ServiceName] <String> [ <CommonParameters>]

更多细节你可以参考来自MSDN的link:Move-AzureDeployment

注意:这仅适用于云服务,不适用于网络应用。 Web APP和云服务的区别:Web App vs Cloud Service

更新

这可能是由于 VSO 在线加载的 azure powershell 脚本不支持交换槽。尝试删除 Azure powershell 模块,并导入一个不同的模块。

请参阅此 MSDN link 中 Ryan P 的回答:https://social.msdn.microsoft.com/Forums/windows/en-US/0f30b76b-7954-4558-a10d-6a2b6635765a/switchazurewebsiteslot-does-not-work-in-vso-online

问题是我正在使用此实用程序通过 FTP 上传文件:

https://marketplace.visualstudio.com/items?itemName=januskamphansen.ftpupload-task

在它的代码中有这一行应该注释掉,以免在它后面的任务中阻止 azure 命令:

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$CurrentSession.ignoreCert}

现在一切正常,我花了一个星期才找到它,我希望这个答案能为别人节省时间。