Ce document présente l'automatisation du déploiement.
Vous pouvez configurer Cloud Deploy pour qu'il effectue automatiquement les tâches liées à la publication et au déploiement d'un pipeline de diffusion 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
Découvrez comment configurer les 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 une version automatiquement
Vous pouvez configurer Cloud Deploy pour qu'il promeuve automatiquement votre version en cas de déploiement réussi sur une cible. Par exemple, si vous avez trois cibles,
dev
,staging
etprod
, vous pouvez configurer une automatisation de sorte que la version soit promue versprod
, sans autre interaction humaine, après un 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 un calendrier cron.
-
Vous pouvez configurer Cloud Deploy pour faire passer un déploiement d'une phase à la suivante après un déploiement réussi sur la cible précédente. L'avancement des phases 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 la tentative de déploiement un nombre de fois spécifié et le rollback automatique si ce nombre de tentatives échoue.
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:
Vous configurez une automatisation.
Cette automatisation est associée à un seul pipeline de diffusion.
Vous enregistrez cette automatisation à l'aide de
gcloud deploy apply
.La ressource Automation est créée.
Vous appelez le pipeline de diffusion associé à cette automatisation en créant une version.
Le déploiement aboutit pour au moins une cible ou échoue.
Si le déploiement aboutit et que l'automatisation est
promoteReleaseRule
:L'exécution attend que le déploiement soit effectué dans la cible source. La cible source est le
selector.targets
configuré pour l'automatisation, et non dans leAutomationRule
.Si une heure
wait
est 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 aboutit, que l'automatisation est
advanceRolloutRule
et 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é
sourcePhase
est facultative. Si aucune phase source n'est spécifiée, chaque phase du déploiement est avancée automatiquement. L'avancement automatique de la phase se produit lorsque la phase source estIN_PROGRESS
, sous réserve de l'heurewait
.Si une heure
wait
est configurée, l'exécution attend également cette heure.Lorsque vous automatisez un déploiement de canari, vous utilisez ce temps d'attente pour spécifier la durée de chaque phase de canari.
Le déploiement passe automatiquement de cette phase source à la phase suivante du déploiement.
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
:Le déploiement est réessayé après l'heure
wait
configurée, le cas échéant.Si des phases ou des tâches spécifiques sont configurées dans cette règle
repairRollout
, seules ces phases ou ces tâches sont réessayé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.
Si la première tentative échoue, l'exécution attend le délai
wait
configuré, puis réessaie.Les tentatives sont répétées jusqu'à ce que Cloud Deploy ait épuisé la tentative
attempts
.Si toutes les tentatives échouent et que les
attempts
sont épuisées, le déploiement échoue.Lors des nouvelles tentatives, l'état du déploiement est
IN_PROGRESS
jusqu'à ce que le déploiement aboutisse ou échoue après la dernière tentative. L'état de la phase estIN_PROGRESS
lors des nouvelles tentatives, maisFAILED
après chaque échec de déploiement.Si toutes les nouvelles tentatives échouent (ou si aucune n'est configurée), un nouveau déploiement est créé pour effectuer un rollback vers la version la plus récente ayant réussi sur la cible.
Ressources d'automatisation
Il existe deux ressources Cloud Deploy spécifiquement destinées à l'automatisation:
Automatisation
Un
Automation
est 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 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 automatiquement sur votre pipeline de diffusion, ainsi que des informations sur la manière 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 effectuer les tâches à automatiser (comme avancer 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. Consultez la section Configurer des règles d'automatisation pour connaître les autorisations spécifiques requises 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) et Configurer des règles d'automatisation.
Configurer l'automatisation
Pour savoir comment configurer la ressource Automation
, consultez le schéma de fichier de configuration.
Configuration des règles d'automatisation
En plus de cette configuration d'automatisation, vous devez spécifier 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 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 diffusion. Lorsque vous suspendez une automatisation, elle n'est pas exécutée, mais des journaux de la plate-forme sont toujours générés.
Dans la configuration
Automation
, remplacez la propriétésuspended
partrue
.Exécutez
gcloud deploy apply
avec ce fichier de configuration.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
Consultez 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 d'automatisation, consultez la documentation sur le schéma de fichier de configuration.