Condividi tramite


jobs.deployment.strategy.rolling definition

Una distribuzione in sequenza sostituisce le istanze della versione precedente di un'applicazione con istanze della nuova versione dell'applicazione in un set fisso di macchine virtuali (set in sequenza) in ogni iterazione.

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.

Definizioni che fanno riferimento a questa definizione: jobs.deployment.strategy

Proprietà

maxParallel stringa.
Numero massimo di processi in esecuzione in parallelo.

preDeploy preDeployHook.
Hook di pre-distribuzione per la strategia di distribuzione in sequenza.

deploy deployHook.
Distribuire hook per la strategia di distribuzione in sequenza.

routeTraffic routeTrafficHook.
indirizzare l'hook del traffico per la strategia di distribuzione in sequenza.

postRouteTraffic postRouteTrafficHook.
Post route traffic hook per la strategia di distribuzione in sequenza.

on onSuccessOrFailureHook.
L'hook di esito positivo o negativo per la strategia di distribuzione in sequenza.

Osservazioni:

Azure Pipelines supporta attualmente solo la strategia in sequenza per le risorse della macchina virtuale.

Ad esempio, una distribuzione in sequenza attende in genere il completamento delle distribuzioni in ogni set di macchine virtuali prima di procedere al set successivo di distribuzioni. È possibile eseguire un controllo di integrità dopo ogni iterazione e, se si verifica un problema significativo, la distribuzione in sequenza può essere arrestata.

Le distribuzioni in sequenza possono essere configurate specificando la parola chiave rolling: nel nodo strategy:. La variabile strategy.name è disponibile in questo blocco di strategia, che assume il nome della strategia. In questo caso, rotolare.

Tutti gli hook del ciclo di vita sono supportati e i processi hook del ciclo di vita vengono creati per l'esecuzione in ogni macchina virtuale.

preDeploy, deploy, routeTraffice postRouteTraffic vengono eseguiti una volta per ogni dimensione del batch definita da maxParallel. Viene quindi eseguito on: success o on: failure.

Con maxParallel: <# or % of VMs>è possibile controllare il numero/percentuale di destinazioni di macchine virtuali da distribuire in parallelo. In questo modo l'app è in esecuzione in questi computer ed è in grado di gestire le richieste mentre la distribuzione avviene sul resto dei computer, riducendo così il tempo di inattività complessivo.

Nota

Questa funzionalità presenta alcune lacune note. Ad esempio, quando si ritenta una fase, verrà rieseguita la distribuzione in tutte le macchine virtuali non solo in destinazioni non riuscite.

Descrizioni degli hook del ciclo di vita

preDeploy: usato per eseguire i passaggi che inizializzano le risorse prima dell'avvio della distribuzione dell'applicazione.

deploy: usato per eseguire i passaggi per distribuire l'applicazione. L'attività Scarica artefatto verrà inserita automaticamente solo nell'hook deploy per i processi di distribuzione. Per interrompere il download degli artefatti, usare - download: none o scegliere elementi specifici da scaricare specificando 'attività Scarica artefatto pipeline.

routeTraffic: usato per eseguire i passaggi che servono il traffico alla versione aggiornata.

postRouteTraffic: usato per eseguire i passaggi dopo che il traffico viene instradato. In genere, queste attività monitorano l'integrità della versione aggiornata per l'intervallo definito.

on: failure o on: success: usato per eseguire i passaggi per le azioni di rollback o la pulizia.

Esempi

L'esempio di strategia in sequenza seguente per le macchine virtuali aggiorna fino a cinque destinazioni in ogni iterazione. maxParallel determinerà il numero di destinazioni in cui è possibile eseguire la distribuzione, in parallelo. La selezione rappresenta il numero assoluto o la percentuale di destinazioni che devono rimanere disponibili in qualsiasi momento, escludendo le destinazioni in cui vengono distribuite. Viene usato anche per determinare le condizioni di esito positivo e negativo durante la distribuzione.

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

Vedere anche