Azure DevOps-应用程序服务-并行插槽交换

时间:2019-06-12 20:57:05

标签: azure-devops azure-web-sites

这个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."
}

1 个答案:

答案 0 :(得分:0)

默认情况下,这些powershell cmdlet处于阻止状态,因此您需要在后台线程中启动它们,或将它们转换为API调用(它们不应被阻止)。这样,您可以同时或多或少地执行这两个呼叫。

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

或者,您最好使用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

相关问题