jobs.deployment.strategy.rolling 定义

滚动部署将应用程序的早期版本的实例替换为每个迭代中固定虚拟机(滚动集)上应用程序的新版本实例。

rolling:
  maxParallel: string # Maximum number of jobs running in parallel.
  preDeploy: # Pre deploy hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where pre deploy steps will run.
  deploy: # Deploy hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where deploy steps will run.
  routeTraffic: # Route traffic hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where route traffic steps will run.
  postRouteTraffic: # Post route traffic hook for rolling deployment strategy.
    steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
    pool: string | pool # Pool where post route traffic steps will run.
  on: # On success or failure hook for rolling deployment strategy.
    failure: # Runs on failure of any step.
      steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
      pool: string | pool # Pool where post on failure steps will run.
    success: # Runs on success of all of the steps.
      steps: [ task | script | powershell | pwsh | bash | checkout | download | downloadBuild | getPackage | publish | template | reviewApp ] # A list of steps to run.
      pool: string | pool # Pool where on success steps will run.

引用此定义的定义:jobs.deployment.strategy

性能

maxParallel 字符串。
并行运行的作业数上限。

preDeploy preDeployHook
用于滚动部署策略的预部署挂钩。

deploy deployHook
用于滚动部署策略的部署挂钩。

routeTraffic routeTrafficHook
滚动部署策略的路由流量挂钩。

postRouteTraffic postRouteTrafficHook
发布用于滚动部署策略的路由流量挂钩。

on onSuccessOrFailureHook
滚动部署策略的成功或失败挂钩。

注解

Azure Pipelines 目前仅支持对 VM 资源的滚动策略。

例如,滚动部署通常在每组虚拟机上等待部署完成,然后再继续下一组部署。 可以在每次迭代后执行运行状况检查,如果发生重大问题,则可以停止滚动部署。

可以通过在 rolling: 节点下指定关键字 strategy: 来配置滚动部署。 此策略块中提供了 strategy.name 变量,该块采用策略的名称。 在本例中,滚动。

支持所有生命周期挂钩,并创建生命周期挂钩作业以在每个 VM 上运行。

preDeploydeployrouteTrafficpostRouteTrafficmaxParallel定义的批大小执行一次。 然后,执行 on: successon: failure

使用 maxParallel: <# or % of VMs>,可以控制要并行部署到的虚拟机目标的数量/百分比。 这可以确保应用在这些计算机上运行,并且能够在部署发生在计算机的其余部分时处理请求,从而减少了整体停机时间。

注释

此功能存在一些已知差距。 例如,重试某个阶段时,它将在所有 VM 上重新运行部署,而不仅仅是失败的目标。

生命周期挂钩的说明

preDeploy:用于在应用程序部署启动之前运行初始化资源的步骤。

deploy:用于运行部署应用程序的步骤。 下载项目任务将仅在部署作业的 deploy 挂钩中自动注入。 若要停止下载项目,请使用 - download: none 或选择要下载的特定项目,方法是指定 下载管道项目任务

routeTraffic:用于运行向更新版本的流量提供服务的步骤。

postRouteTraffic:用于在路由流量后运行步骤。 通常,这些任务会监视已更新版本的运行状况,以指定间隔。

on: failureon: success:用于运行回滚作或清理的步骤。

例子

以下滚动策略示例:VM 在每个迭代中更新最多五个目标。 maxParallel 将确定可并行部署到的目标数。 所选内容包含必须随时保留的绝对数量或目标百分比,不包括要部署到的目标。 它还用于确定部署期间的成功和失败条件。

jobs: 
- deployment: VMDeploy
  displayName: web
  environment:
    name: smarthotel-dev
    resourceType: VirtualMachine
  strategy:
    rolling:
      maxParallel: 5  #for percentages, mention as x%
      preDeploy:
        steps:
        - download: current
          artifact: drop
        - script: echo initialize, cleanup, backup, install certs
      deploy:
        steps:
        - task: IISWebAppDeploymentOnMachineGroup@0
          displayName: 'Deploy application to Website'
          inputs:
            WebSiteName: 'Default Web Site'
            Package: '$(Pipeline.Workspace)/drop/**/*.zip'
      routeTraffic:
        steps:
        - script: echo routing traffic
      postRouteTraffic:
        steps:
        - script: echo health check post-route traffic
      on:
        failure:
          steps:
          - script: echo Restore from backup! This is on failure
        success:
          steps:
          - script: echo Notify! This is on success

另请参阅