définition jobs.deployment.strategy.rolling
Un déploiement propagé remplace les instances de la version précédente d’une application par les instances de la nouvelle version de l’application sur un ensemble fixe de machines virtuelles (ensemble propagé) à chaque itération.
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.
Définitions qui font référence à cette définition : jobs.deployment.strategy
Propriétés
maxParallel
String.
Nombre maximal de travaux en cours d’exécution en parallèle.
preDeploy
preDeployHook.
Crochet de prédéploiement pour la stratégie de déploiement propagée.
deploy
deployHook.
Déployer le hook pour la stratégie de déploiement propagée.
routeTraffic
routeTrafficHook.
Router le hook de trafic pour la stratégie de déploiement propagée.
postRouteTraffic
postRouteTrafficHook.
Hook de trafic post-routage pour la stratégie de déploiement propagée.
on
onSuccessOrFailureHook.
En cas de réussite ou d’échec du hook pour la stratégie de déploiement propagée.
Notes
Actuellement, Azure Pipelines prend uniquement en charge la stratégie de déploiement sur les ressources de machine virtuelle.
Par exemple, un déploiement propagé attend généralement que les déploiements sur chaque ensemble de machines virtuelles se terminent avant de passer à l’ensemble suivant de déploiements. Vous pouvez effectuer un contrôle d’intégrité après chaque itération et si un problème important se produit, le déploiement propagé peut être arrêté.
Les déploiements propagés peuvent être configurés en spécifiant le mot clé rolling:
sous le nœud strategy:
.
La variable strategy.name
est disponible dans ce bloc de stratégie, qui prend le nom de la stratégie. Dans ce cas, un déploiement propagé.
Tous les hooks de cycle de vie sont pris en charge et les travaux de hook de cycle de vie sont créés pour s’exécuter sur chaque machine virtuelle.
preDeploy
, deploy
, routeTraffic
et postRouteTraffic
sont exécutés une fois par taille de lot définie par maxParallel
.
Ensuite, on: success
ou on: failure
est exécuté.
Avec maxParallel: <# or % of VMs>
, vous pouvez contrôler le nombre/pourcentage de cibles de machine virtuelle sur lesquelles effectuer un déploiement en parallèle. Cela garantit que l’application s’exécute sur ces machines et qu’elle est capable de gérer les demandes pendant que le déploiement a lieu sur le reste des machines, ce qui réduit le temp d’arrêt global.
Notes
Il existe quelques lacunes connues dans cette fonctionnalité. Par exemple, lorsque vous retentez un index, elle va réexécuter le déploiement sur toutes les machines virtuelles, pas seulement sur les cibles ayant échoué.
Descriptions des hooks de cycle de vie
preDeploy
: Utilisé pour exécuter les étapes qui initialisent les ressources avant le démarrage du déploiement de l’application.
deploy
: Utilisé pour exécuter les étapes qui déploient votre application. La tâche de téléchargement des artefacts est injectée automatiquement uniquement dans le hook deploy
pour les travaux de déploiement. Pour arrêter le téléchargement d’artefacts, utilisez - download: none
ou choisissez des artefacts spécifiques à télécharger en spécifiant la tâche Télécharger un artefact de pipeline.
routeTraffic
: Utilisé pour exécuter les étapes qui servent le trafic à la version mise à jour.
postRouteTraffic
: Utilisé pour exécuter les étapes après le routage du trafic. En règle générale, ces tâches supervisent l’intégrité de la version mise à jour pendant une période définie.
on: failure
ou on: success
: Utilisé pour exécuter les étapes de nettoyage ou des actions de restauration.
Exemples
L’exemple de stratégie propagée suivant pour les machines virtuelles met à jour jusqu’à cinq cibles dans chaque itération. maxParallel
détermine le nombre de cibles qui peuvent simultanément faire l’objet d’un déploiement. La sélection prend en compte le nombre absolu ou le pourcentage de cibles qui doivent rester disponibles à tout moment, à l’exclusion des cibles sur lesquelles un déploiement est en cours. Il est également utilisé pour déterminer les conditions de réussite et d’échec lors d’un déploiement.
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