Поделиться через


Определение 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 Строка.
Максимальное число заданий, выполняющихся параллельно.

preDeploypreDeployHook.
Предварительное развертывание обработчика для последовательной стратегии развертывания.

deploydeployHook.
Обработчик развертывания для последовательной стратегии развертывания.

routeTrafficrouteTrafficHook.
Перехватчик трафика маршрутизации для последовательной стратегии развертывания.

postRouteTrafficpostRouteTrafficHook.
Перехватчик трафика после маршрутизации для последовательной стратегии развертывания.

ononSuccessOrFailureHook.
При успешном или неудачном перехватчике для последовательной стратегии развертывания.

Комментарии

В настоящее время Azure Pipelines поддерживает только стратегию перехода к ресурсам виртуальных машин.

Например, последовательное развертывание обычно ожидает завершения развертываний на каждом наборе виртуальных машин, прежде чем переходить к следующему набору развертываний. Вы можете выполнять проверка работоспособности после каждой итерации, и если возникает значительная проблема, последовательное развертывание можно остановить.

Последовательное развертывание можно настроить, указав ключевое слово rolling: в strategy: узле. Переменная strategy.name доступна в этом блоке стратегии, который принимает имя стратегии. В этом случае прокатка.

Поддерживаются все обработчики жизненного цикла, а задания обработчика жизненного цикла создаются для выполнения на каждой виртуальной машине.

preDeploy, deploy, routeTrafficи postRouteTraffic выполняются один раз для каждого размера пакета, определенного в maxParallel. После этого выполняется on: success или on: failure.

С помощью maxParallel: <# or % of VMs>можно управлять количеством или процентами целевых объектов виртуальных машин для параллельного развертывания. Это гарантирует, что приложение работает на этих компьютерах и может обрабатывать запросы во время развертывания на остальных компьютерах, что сокращает общее время простоя.

Примечание

В этой функции есть несколько известных пробелов. Например, при повторной попытке этапа будет повторно запущено развертывание на всех виртуальных машинах, а не только на целевых объектах, которые завершили сбой.

Описание перехватчиков жизненного цикла

preDeploy: используется для выполнения шагов, которые инициализируют ресурсы перед началом развертывания приложения.

deploy: используется для выполнения шагов, которые развертывают приложение. Задача скачивания артефактов будет автоматически вставлена только в deploy перехватчик для заданий развертывания. Чтобы остановить скачивание артефактов, используйте - download: none или выберите определенные артефакты для скачивания, указав задачу "Скачать артефакт конвейера".

routeTraffic: используется для выполнения шагов, которые обслуживают трафик в обновленную версию.

postRouteTraffic: используется для выполнения шагов после маршрутизации трафика. Как правило, эти задачи отслеживают работоспособность обновленной версии с определенным интервалом.

on: failure или on: success: используется для выполнения шагов для действий отката или очистки.

Примеры

Следующий пример последовательной стратегии для виртуальных машин обновляет до пяти целевых объектов в каждой итерации. 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

См. также раздел