Ce document présente l'automatisation du déploiement.
Vous pouvez configurer Cloud Deploy pour qu'il effectue automatiquement les tâches liées aux versions et aux déploiements pour un pipeline de déploiement donné. Ces tâches incluent la promotion des versions et l'avancement des phases.
En savoir plus sur les ressources utilisées pour l'automatisation des versions dans Cloud Deploy
En savoir plus sur la configuration des règles qui définissent le fonctionnement de ces automatisations
Actions que vous pouvez automatiser
Dans Cloud Deploy, vous pouvez automatiser les activités de publication et de déploiement suivantes :
Promouvoir automatiquement une version
Vous pouvez configurer Cloud Deploy pour qu'il promeuve automatiquement votre version une fois le déploiement réussi sur une cible. Par exemple, si vous avez trois cibles,
dev,stagingetprod, vous pouvez configurer une automatisation de sorte que la version soit promue versprod, sans autre interaction humaine, en cas de déploiement réussi dansstaging. Vous pouvez également spécifier un délai.Promouvoir une version selon un calendrier
Vous pouvez configurer Cloud Deploy pour qu'il promeuve votre version selon une planification cron.
-
Vous pouvez configurer Cloud Deploy pour faire passer un déploiement d'une phase à la suivante, après un déploiement réussi vers la cible précédente. L'avancement de phase n'est disponible que dans les cibles qui utilisent une stratégie de déploiement Canary.
-
Vous pouvez configurer Cloud Deploy pour qu'il relance automatiquement un déploiement ayant échoué. Cela inclut de réessayer le déploiement un nombre de fois spécifié et de le rétablir automatiquement si ce nombre de tentatives échoue.
Pour en savoir plus sur ces actions et sur la façon de les configurer, consultez Règles d'automatisation.
Comment fonctionne l'automatisation ?
Chaque automatisation est liée au pipeline de livraison pour lequel elle est utilisée. Vous ne pouvez pas partager une automatisation entre plusieurs pipelines de livraison.
Voici le processus général de configuration et d'exécution d'une automatisation :
Vous configurez une automatisation.
Cette automatisation est associée à un pipeline de livraison.
Vous enregistrez cette automatisation à l'aide de
gcloud deploy apply.Cela crée la ressource d'automatisation.
Vous appelez le pipeline de livraison associé à cette automatisation en créant une version.
Le déploiement réussit pour au moins une cible ou échoue.
Si le déploiement réussit et que l'automatisation est
promoteReleaseRule:L'exécution attend que le déploiement réussisse dans la cible source. La cible source est le
selector.targetsconfiguré pour l'automatisation, et non dansAutomationRule.Si une heure
waitest configurée, l'exécution attend également cette heure.La version est automatiquement promue vers la cible suivante dans la progression du pipeline ou vers une cible spécifique, si elle est indiquée.
Si le déploiement réussit, que l'automatisation est
advanceRolloutRuleet que la cible utilise une stratégie de déploiement Canary :L'exécution attend la phase source identifiée, le cas échéant.
La propriété
sourcePhaseest facultative. Si aucune phase source n'est spécifiée, chaque phase du déploiement est automatiquement avancée. L'avancement automatique de la phase se produit lorsque la phase source estIN_PROGRESS, sous réserve du tempswait.Si une heure
waitest configurée, l'exécution attend également cette heure.Lorsque vous automatisez un déploiement Canary, vous utilisez ce temps d'attente pour spécifier la durée de chaque phase Canary.
Le déploiement passe automatiquement de cette phase source à la phase suivante.
S'il existe une phase source supplémentaire, elle est traitée de la même manière, y compris le même temps d'attente, le cas échéant.
Si le déploiement échoue et qu'il existe une automatisation avec une règle
repairRollout:Le déploiement est retenté après le délai
waitconfiguré, le cas échéant.Si des phases ou des jobs spécifiques sont configurés dans cette règle
repairRollout, seules ces phases ou ces jobs sont relancés. Par défaut, si aucun job ni aucune phase n'est spécifié, toutes les phases et tous les jobs du déploiement sont relancés.Les nouvelles tentatives étant facultatives, cette étape n'a pas lieu si votre automatisation n'est pas configurée pour les nouvelles tentatives.
Si la première tentative échoue, l'exécution attend la durée
waitconfigurée, puis réessaie.Les tentatives sont répétées jusqu'à ce que Cloud Deploy ait épuisé le
attemptsde tentatives.Si chaque tentative échoue et que les
attemptssont épuisés, le déploiement échoue.Lors des nouvelles tentatives, l'état du déploiement est
IN_PROGRESSjusqu'à ce que le déploiement réussisse ou échoue après la dernière tentative. L'état de la phase estIN_PROGRESSlors des nouvelles tentatives, maisFAILEDaprès chaque échec du déploiement.Si toutes les tentatives échouent (ou si aucune n'est configurée), un nouveau déploiement est créé pour effectuer un rollback vers la dernière version réussie sur la cible.
Ressources d'automatisation
Deux ressources Cloud Deploy sont spécifiquement conçues pour l'automatisation :
Automatisation
Un
Automationest une ressource enfant d'un pipeline de diffusion. Il inclut les informations suivantes :- Pointeur vers la ou les cibles pour lesquelles l'automatisation est utilisée
- Règle ou règles qui régissent ce que l'automatisation fait et comment elle le fait
La configuration de la ressource Automation est décrite dans le document À propos de la ressource Automation.
Lorsque vous exécutez
gcloud deploy applysur un fichier qui inclut une configuration d'automatisation (kind: Automation), Cloud Deploy crée une ressource d'automatisation, qui associe un pipeline de déploiement et une ou plusieurs cibles à une ou plusieurs règles d'automatisation.Exécution de l'automatisation
AutomationRunest une instance d'automatisation. Il s'agit d'un pointeur vers la ressource Automation correspondante, ainsi que d'informations sur le déploiement qui l'a générée et d'autres métadonnées.L'exécution de l'automatisation est créée lorsqu'une automatisation est déclenchée.
En savoir plus sur les ressources d'automatisation
Règles d'automatisation
Une règle d'automatisation définit une action qui peut être effectuée automatiquement sur votre pipeline de livraison, ainsi que des informations sur la façon dont l'automatisation doit être effectuée.
En savoir plus sur les règles d'automatisation
Rôles et autorisations Identity and Access Management requis
En plus des autorisations dont vous avez besoin pour exécuter un pipeline de déploiement Cloud Deploy et pour effectuer les tâches à automatiser (comme faire progresser un déploiement progressif), plusieurs autorisations sont nécessaires pour effectuer certaines opérations sur les ressources Automation et AutomationRun :
clouddeploy.automations.createclouddeploy.automations.deleteclouddeploy.automations.getclouddeploy.automations.listclouddeploy.automations.updateclouddeploy.automationRuns.cancelclouddeploy.automationRuns.getclouddeploy.automationRuns.list
En plus de ces autorisations, chaque règle d'automatisation peut nécessiter des autorisations supplémentaires pour effectuer l'opération automatisée. Consultez Configurer des règles d'automatisation pour connaître les autorisations spécifiques requises pour chaque règle d'automatisation.
Consultez Rôles et autorisations IAM pour en savoir plus, y compris sur les rôles Cloud Deploy qui incluent ces autorisations.
Créer une automatisation
Vous pouvez créer une automatisation, y compris en utilisant l'une des règles d'automatisation disponibles, en configurant une automatisation, puis en créant la ressource d'automatisation à l'aide de gcloud deploy apply.
Consultez la section suivante (Configurer l'automatisation) et Configurer des règles d'automatisation.
Configurer l'automatisation
Pour savoir comment configurer la ressource Automation, consultez le schéma du fichier de configuration.
Configuration des règles d'automatisation
En plus de cette configuration d'automatisation, vous spécifiez des règles d'automatisation. La configuration est différente pour chacune des règles disponibles.
Pour obtenir une description de chacune des règles disponibles, consultez Utiliser des règles d'automatisation.
Suspendre une automatisation
Vous pouvez suspendre une ressource existante sans la supprimer. Cela peut être utile pour tester une automatisation sans affecter le pipeline de livraison. Lorsque vous suspendez une automatisation, elle n'est pas exécutée, mais des journaux de plate-forme sont toujours générés.
Dans la configuration
Automation, remplacez la propriétésuspendedpartrue.Exécutez
gcloud deploy applysur ce fichier de configuration.Les journaux de plate-forme sont toujours générés lorsque l'automatisation est instanciée, même si elle est suspendue. Vous pouvez l'utiliser pour tester et déboguer l'automatisation sans affecter le pipeline de livraison.
Étapes suivantes
Essayez le guide de démarrage rapide : automatiser la création de versions et l'avancement du déploiement.
En savoir plus sur les règles d'automatisation Cloud Deploy
En savoir plus sur les ressources d'automatisation Cloud Deploy
Pour en savoir plus sur les fichiers de configuration de l'automatisation, consultez la documentation sur le schéma des fichiers de configuration.