Automatiser votre déploiement

Ce document présente l'automatisation du déploiement.

Vous pouvez configurer Cloud Deploy pour qu'il effectue automatiquement et les tâches liées au déploiement pour un pipeline de livraison donné. Ces tâches incluent la promotion de la version 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 et définir le fonctionnement de ces automatisations.

Actions que vous pouvez automatiser

Dans Cloud Deploy, vous pouvez automatiser les versions suivantes activités de déploiement:

Pour en savoir plus sur ces actions et leur configuration, consultez la page Règles d'automatisation.

Comment fonctionne l'automatisation ?

Chaque automatisation est associée au pipeline de diffusion pour lequel elle est utilisée. Vous ne pouvez pas partager une automatisation entre plusieurs pipelines de diffusion.

Voici le processus général de configuration et d'exécution d'une automatisation :

  1. Toi configurer une automatisation

    Cette automatisation est associée à un pipeline de livraison.

  2. Vous enregistrez cette automatisation à l'aide de gcloud deploy apply.

    La ressource Automation est créée.

  3. Vous appelez le pipeline de diffusion associé à cette automatisation en créant une version.

  4. Le déploiement réussit pour au moins une cible ou échoue.

    Si le déploiement aboutit et que l'automatisation est promoteReleaseRule :

    1. L'exécution attend que le déploiement aboutisse sur la cible source. La cible source est l'selector.targets configurée pour l'automatisation, et non dans AutomationRule.

    2. Si une durée wait est configurée, l'exécution attend également cette heure.

    3. La version est automatiquement promue à la cible suivante dans le pipeline la progression ou vers une cible spécifique, si indiqué.

    Si le déploiement réussit, et que l'automatisation est advanceRolloutRule et que target utilise une stratégie de déploiement Canary:

    1. L'exécution attend la phase source identifiée, le cas échéant.

      La propriété sourcePhase est facultative. Si aucune phase source n'est spécifiée, chaque phase du déploiement est avancée automatiquement. La l'avancement automatique de la phase se produit lorsque la phase source est IN_PROGRESS, jusqu'à wait fois.

    2. Si une heure wait est 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.

    3. Le déploiement passe automatiquement de cette phase source à la phase suivante du déploiement.

    4. Si une phase de source supplémentaire est définie, 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:

    1. Le déploiement est réessayé après l'heure wait configurée, le cas échéant.

      Si des phases ou des jobs spécifiques sont configurés dans cette règle repairRollout, seules ces phases ou tâches sont relancées. Par défaut, si aucune tâche ni aucune phase n'est spécifiée, toutes les phases et toutes les tâches du déploiement sont réessayées.

      Étant donné que les nouvelles tentatives sont facultatives, si votre automatisation n'est pas configurée pour effectuer de nouvelles tentatives, cette étape n'a pas lieu.

    2. Si la première tentative échoue, l'exécution attend l'heure wait configurée, puis réessaie.

    3. Les tentatives sont répétées jusqu'à ce que Cloud Deploy ait épuisé la tentative attempts.

      Si chaque tentative échoue et que attempts est épuisé, le déploiement est défaillant.

      Lors des nouvelles tentatives, le déploiement state est IN_PROGRESS jusqu'à ce que le déploiement réussisse ou échoue après dernière tentative. L'état de la phase est IN_PROGRESS lors des nouvelles tentatives, mais FAILED après chaque échec de déploiement.

    4. Si toutes les tentatives échouent (ou si aucune n'est configurée), un déploiement est créé pour effectuer un rollback vers la version la plus récente réussie de la cible.

Ressources d'automatisation

Deux ressources Cloud Deploy sont spécifiquement destinées automatisation:

  • Automatisation

    Un Automation est une ressource enfant d'un pipeline de livraison et 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 fait l'automatisation 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 apply sur un fichier qui inclut une configuration d'automatisation (kind: Automation), Cloud Deploy crée une ressource d'automatisation, qui associe un pipeline de diffusion et une ou plusieurs règles d'automatisation.

  • Exécution de l'automatisation

    AutomationRun est 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é 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 pouvant être effectuée sur votre pipeline de livraison automatiquement, ainsi que des détails 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 nécessaires pour exécuter des déploiements Cloud Deploy du pipeline de livraison et l'automatisation des tâches (comme l'avance lors d'un déploiement), plusieurs autorisations sont nécessaires pour effectuer certaines opérations sur les ressources Automation et AutomationRun:

  • clouddeploy.automations.create
  • clouddeploy.automations.delete
  • clouddeploy.automations.get
  • clouddeploy.automations.list
  • clouddeploy.automations.update
  • clouddeploy.automationRuns.cancel
  • clouddeploy.automationRuns.get
  • clouddeploy.automationRuns.list

En plus de ces autorisations, chaque règle d'automatisation peut nécessiter d'autres autorisations pour effectuer l'opération automatisée. Voir Configurer des règles d'automatisation pour les autorisations spécifiques nécessaires par règle d'automatisation.

Pour en savoir plus, y compris sur les rôles Cloud Deploy qui incluent ces autorisations, consultez la page Rôles et autorisations IAM.

Créer une automatisation

Vous pouvez créer une automatisation, y compris à l'aide de 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) Configurer des règles d'automatisation

Configurer l'automatisation

Consultez le Schéma du fichier de configuration pour savoir comment configurer Ressource Automation.

Configuration des règles d'automatisation

En plus de cette configuration d'automatisation, vous spécifiez 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 la section 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 suspendre une automatisation, celle-ci n'est pas exécutée, journaux de plate-forme sont toujours générés.

  1. Dans Configuration de Automation, Définissez la propriété suspended sur true.

  2. Exécutez gcloud deploy apply sur ce fichier de configuration.

  3. Les journaux de la plate-forme sont toujours générés lors de l'instanciation de l'automatisation, même si elle est suspendue. Vous pouvez l'utiliser pour tester et déboguer l'automatisation sans affecter le pipeline de diffusion.

Étape suivante