【问题标题】:Azure DevOps - App Service - Parallel Slot SwapAzure DevOps - 应用服务 - 并行插槽交换
【发布时间】:2019-06-14 01:44:00
【问题描述】:

这个Deploy Task 超级酷。我想同时做两个。有没有办法通过 DevOps 任务来做到这一点?如果没有,是否有任何已知的解决方法?我用 Azure PowerShell 尝试了这个,但命令没有触发,即使它在本地工作:(

Start-Job -Name API {
    #Switch-AzureRmWebAppSlot -SourceSlotName "staging" -DestinationSlotName "production" -ResourceGroupName "CoolResGroup" -Name "something-api-east"
}

Write-Host "API Staging <-> Prod swap initiated"

Start-Job -Name Web {
    #Switch-AzureRmWebAppSlot -SourceSlotName "staging" -DestinationSlotName "production" -ResourceGroupName "CoolResGroup" -Name "something-web-east"
}

Write-Host "Web Staging <-> Prod swap initiated"

Wait-Job -Name API
Wait-Job -Name Web

If (Get-Job -Name API -ea silentlycontinue)
{
    Write-Host "API state: $((Get-Job -Name API).State)"
} 
Else 
{
    Write-Host "API slot swap complete."
}

If (Get-Job -Name Web -ea silentlycontinue)
{
    Write-Host "Web state: $((Get-Job -Name Web).State)"
} 
Else 
{
    Write-Host "Web slot swap complete."
}

【问题讨论】:

  • 一次定义两个?只需第二次添加相同的任务并配置它?
  • 这将依次执行每个。我已经这样做了,它正在工作,但我想同时交换网站和 API 应用程序服务。

标签: azure-devops azure-web-app-service


【解决方案1】:

默认情况下,这些 powershell cmdlet 是阻塞的,因此您要么需要在后台线程中启动它们,要么将它们转换为 API 调用(它们不应阻塞)。这样,您可以或多或少地同时执行这 2 个调用。

但是,这会使您的流程复杂化,因为您需要检测两个交换是否正常完成(因此您需要进行额外检查)。

或者,您最好使用 A\B 部署。链接:https://www.hanselman.com/blog/ABTestingAndTestingInProductionWithAzureWebApps.aspx
http://involvenevolve.com/post/managing-azure-app-service-routing-rules/
https://docs.microsoft.com/ru-ru/cli/azure/webapp/traffic-routing?view=azure-cli-latest#az-webapp-traffic-routing-set

【讨论】:

  • 如果我进行 A|B 部署,我仍然有两个应用服务需要同时切换它们的流量百分比,对吗?我必须告诉 Web 应用服务将 100% 的流量放到 Staging 插槽或我选择的任何插槽。然后我需要对 API 做同样的事情。如果我错过了什么,请告诉我。
  • 不要放 100%,放 5%
  • 噢噢我明白了。切换到蓝/绿部署的好机会!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多