Azure Pipelines AzureWebApp@1 任务启动和停止应用服务

Azure Pipelines AzureWebApp@1 Task Start and Stop App Service

我正在使用以下 YAML 脚本通过 Azure Pipelines 将我的 Web 应用部署到我们的 Azure Web 服务:

 - deployment: Api
    displayName: Deploy Web Api
    pool:
       name: 'MyApi-FMMR'
    environment: 'Prod'
    strategy:
     runOnce:
       deploy:
        steps:
        - task: AzureWebApp@1
          inputs:
            azureSubscription: 'AzureHFMG'
            appType: webApp
            appName: 'cp-admin-api-prod'
            package: '$(Pipeline.Workspace)/drop/*.zip'    

但我想知道,在我使用此任务部署新版本之前是否有必要停止 WebApp。
在旧的经典管道中,我总是观察到这样的事情:

这里在任务前后添加了“停止”和“开始”两个任务,但如果我尝试这样做,即使没有它们也能正常工作。

添加这些任务是最佳做法吗?或者它们是由“AzureWebApp@1”任务隐式调用的?

您不一定需要这些任务; Deploy 任务会自动重启服务。

但是,这有缺点:

  1. 会有一小段停机时间
  2. 某些服务会因突然停止和重新启动而受到影响,例如在预热之前无法响应

可以通过使用 staging slot 部署代码来缓解这些问题,然后交换插槽以允许新部署无缝接管。