jobs.deployment.strategy.rolling definition

uma implantação sem interrupção substitui as instâncias da versão anterior de um aplicativo por instâncias da nova versão do aplicativo em um conjunto fixo de máquinas virtuais (conjunto sem interrupção) em cada iteração.

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.

Definições que fazem referência a essa definição: jobs.deployment.strategy

Propriedades

maxParallel String.
Número máximo de trabalhos em execução em paralelo.

preDeploypreDeployHook.
Pré-implantar gancho para a estratégia de implantação sem interrupção.

deploydeployHook.
Implantar gancho para a estratégia de implantação sem interrupção.

routeTrafficrouteTrafficHook.
Encaminhe o gancho de tráfego para a estratégia de implantação sem interrupção.

postRouteTrafficpostRouteTrafficHook.
Gancho de tráfego pós-rota para a estratégia de implantação sem interrupção.

ononSuccessOrFailureHook.
Em gancho de êxito ou falha para a estratégia de implantação sem interrupção.

Comentários

Atualmente, o Azure Pipelines dá suporte apenas à estratégia sem interrupção para recursos de VM.

Por exemplo, uma implantação sem interrupção normalmente aguarda a conclusão de implantações em cada conjunto de máquinas virtuais antes de prosseguir para o próximo conjunto de implantações. Você pode fazer uma verificação de integridade após cada iteração e, se ocorrer um problema significativo, a implantação sem interrupção poderá ser interrompida.

Implantações dinâmicas podem ser configuradas especificando a palavra-chave rolling: no nó strategy:. A variável strategy.name está disponível nesse bloco de estratégia, que leva o nome da estratégia. Nesse caso, dinâmica.

Todos os ganchos de ciclo de vida têm suporte e trabalhos de gancho de ciclo de vida são criados para execução em cada VM.

preDeploy, deploy, routeTraffic e postRouteTraffic são executados uma vez por tamanho de lote definido por maxParallel. Depois, on: success ou on: failure é executado.

Com maxParallel: <# or % of VMs>, você pode controlar o número/percentual de destinos de máquina virtual para implantar em paralelo. Isso garante que o aplicativo esteja em execução nesses computadores e seja capaz de lidar com solicitações enquanto a implantação está ocorrendo no restante dos computadores, o que reduz o tempo de inatividade geral.

Observação

Há algumas lacunas conhecidas nesse recurso. Por exemplo, quando você tentar novamente uma fase, ele executará novamente a implantação em todas as VMs, não apenas em destinos com falha.

Descrições de ganchos de ciclo de vida

preDeploy: usado para executar etapas que inicializam recursos antes do início da implantação do aplicativo.

deploy: usado para executar etapas que implantam seu aplicativo. A tarefa baixar artefato será injetada automaticamente apenas no gancho de deploy para trabalhos de implantação. Para interromper o download de artefatos, use - download: none ou escolha artefatos específicos para baixar especificando tarefa Baixar artefato de pipeline.

routeTraffic: usado para executar etapas que atendem o tráfego para a versão atualizada.

postRouteTraffic: usado para executar as etapas depois que o tráfego é roteado. Normalmente, essas tarefas monitoram a integridade da versão atualizada para um intervalo definido.

on: failure ou on: success: usado para executar etapas para reverter ações ou limpar.

Exemplos

O exemplo de estratégia sem interrupção a seguir para VMs atualiza até cinco destinos em cada iteração. maxParallel determinará o número de destinos para os quais as implantações podem ocorrer paralelamente. As contas de seleção para um número absoluto ou um percentual de destinos que devem permanecer disponíveis a qualquer momento, excluindo os destinos para os quais as implantações estão sendo realizadas. Ele também é usado para determinar as condições de êxito e falha durante a implantação.

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

Confira também