jobs.deployment.strategy.rolling definition
Una implementación gradual reemplaza las instancias de la versión anterior de una aplicación por instancias de la nueva versión en un conjunto fijo de máquinas virtuales (conjunto de implementación gradual) en cada iteración.
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.
Definiciones que hacen referencia a esta definición: jobs.deployment.strategy
Propiedades
maxParallel
Cadena.
Número máximo de trabajos que se ejecutan en paralelo.
preDeploy
preDeployHook.
Enlace previo a la implementación para la estrategia de implementación gradual.
deploy
deployHook.
Implemente el enlace para la estrategia de implementación gradual.
routeTraffic
routeTrafficHook.
Enrutamiento del enlace de tráfico para la estrategia de implementación gradual.
postRouteTraffic
postRouteTrafficHook.
Después del enlace de tráfico de ruta para la estrategia de implementación gradual.
on
onSuccessOrFailureHook.
En el enlace de éxito o error para la estrategia de implementación gradual.
Observaciones
Actualmente, Azure Pipelines solo admite la estrategia gradual para los recursos de máquina virtual.
Por ejemplo, una implementación gradual suele esperar a que se completen las implementaciones en cada conjunto de máquinas virtuales antes de continuar con el siguiente conjunto de implementaciones. Puede realizar una comprobación de estado después de cada iteración y, si se produce un problema significativo, se puede detener la implementación gradual.
Las implementaciones graduales se pueden configurar especificando la palabra clave rolling:
en el nodo strategy:
.
La variable strategy.name
está disponible en este bloque de estrategia, que toma el nombre de la estrategia. En este caso, gradual.
Se admiten todos los enlaces de ciclo de vida y se crean trabajos de enlace de ciclo de vida para ejecutarse en cada máquina virtual.
preDeploy
, deploy
, routeTraffic
y postRouteTraffic
se ejecutan una vez por tamaño de lote definido por maxParallel
.
Luego, se ejecuta on: success
o on: failure
.
Con maxParallel: <# or % of VMs>
, puede controlar el número o porcentaje de destinos de máquina virtual que se van a implementar en paralelo. Esto garantiza que la aplicación se ejecute en estas máquinas y sea capaz de controlar las solicitudes mientras la implementación se realiza en el resto de las máquinas, lo que reduce el tiempo de inactividad general.
Nota:
Hay algunas lagunas conocidas en esta característica. Por ejemplo, cuando vuelva a intentar una fase, volverá a ejecutar la implementación en todas las máquinas virtuales, no solo destinos con errores.
Descripciones de enlaces de ciclo de vida
preDeploy
: se usa para ejecutar pasos que inicializan los recursos antes de que comience la implementación de la aplicación.
deploy
: se usa para ejecutar los pasos que implementan la aplicación. La tarea Descargar artefacto se insertará automáticamente solo en el enlace de deploy
para trabajos de implementación. Para detener la descarga de artefactos, use - download: none
o elija artefactos específicos para descargar mediante la especificación de la tarea Descargar artefacto de canalización.
routeTraffic
: se usa para ejecutar pasos que sirven el tráfico a la versión actualizada.
postRouteTraffic
: se usa para ejecutar los pasos después de enrutar el tráfico. Normalmente, estas tareas supervisan el estado de la versión actualizada durante un intervalo definido.
on: failure
u on: success
: se usan para ejecutar pasos de acciones de reversión o limpieza.
Ejemplos
El siguiente ejemplo de estrategia gradual para las máquinas virtuales actualiza hasta cinco destinos en cada iteración. maxParallel
determinará el número de destinos que se pueden implementar en paralelo. La selección tiene en cuenta el número absoluto o el porcentaje de destinos que deben permanecer disponibles en cualquier momento excluyendo los destinos en los que se está realizando la implementación. También se usa para determinar las condiciones de acierto y error durante la implementación.
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