Ce document décrit les règles d'automatisation, qui sont des actions pouvant être effectuées automatiquement sur votre pipeline de diffusion. Par exemple, vous pouvez configurer votre pipeline de diffusion pour que la promotion vers une cible spécifique se produise automatiquement, dans les bonnes circonstances.
Vous ne pouvez utiliser que les règles d'automatisation intégrées à Cloud Deploy. Les règles d'automatisation disponibles sont listées dans ce document.
Règles d'automatisation disponibles
Les règles d'automatisation suivantes sont disponibles dans Cloud Deploy :
Règle | Description |
---|---|
timedPromoteReleaseRule
|
Promouvoir automatiquement une version d'une cible à l'autre
en fonction d'une programmation cron. |
promoteReleaseRule
|
Promouvoir automatiquement une version vers la cible indiquée en cas de déploiement réussi
déploiement sur la cible précédente de la progression. |
advanceRolloutRule
|
Fait automatiquement passer un déploiement de la phase indiquée à la suivante.
phase à la phase suivante. |
repairRolloutRule
|
Relancer automatiquement le ou les jobs ayant échoué dans le déploiement
le nombre de fois spécifié et effectue un rollback si toutes les tentatives échouent. |
Configurer des règles d'automatisation
La configuration de chaque règle d'automatisation dépend de la règle spécifique. Cette section décrit la configuration commune à toutes les règles, ainsi que la façon de configurer chacune des règles disponibles.
Chaque règle d'automatisation est configurée dans la configuration de la ressource d'automatisation. Cela peut se trouver dans le même fichier que la configuration du pipeline de diffusion concerné (généralement appelé clouddeploy.yaml
) ou dans n'importe quel fichier de votre choix. Découvrez comment configurer les automatisations.
Les sections suivantes décrivent la configuration spécifique à chaque règle d'automatisation. Pour configurer l'automatisation elle-même, consultez Automatiser votre déploiement.
Configurer une règle d'automatisation timedPromoteReleaseRule
La règle timedPromoteReleaseRule
vous permet de programmer la promotion d'une version depuis la ou les cibles sélectionnées vers la cible suivante dans la progression ou vers une cible spécifiée. Lorsque vous configurez une automatisation timedPromoteReleaseRule
, vous spécifiez quand promouvoir la version, en fonction d'une planification cron.
rules:
- timedPromoteReleaseRule:
name: "[RULE_NAME]"
schedule: "[CRON]"
timeZone: "[TIME_ZONE]"
destinationTargetId: "[TO_TARGET]"
destinationPhase: "[TO_PHASE]"
Où :
[RULE_NAME]
est le nom que vous souhaitez donner à cette règle. Ce nom doit être unique dans le pipeline de livraison.
[CRON]
Il s'agit de la planification cron qui spécifie quand promouvoir la version. Utilisez cette programmation pour spécifier la date et l'heure auxquelles vous souhaitez promouvoir la sortie.
Cette programmation utilise la syntaxe
cron
standard :* * * * *
Dans ce calendrier…
- La première position correspond à la minute (
0
-59
). - La deuxième position correspond à l'heure (
0
-23
). - La troisième position correspond au jour du mois (
1
-31
). - La quatrième position correspond au mois (
1
-12
). - La cinquième position correspond au jour de la semaine (
0
-6
, du dimanche au samedi).
Par exemple, si votre règle de promotion programmée inclut la planification suivante :
0 9 * * 1
, votre sortie est promue tous les lundis à 9h.Vous pouvez également utiliser les fonctionnalités standards de planification Cron, telles que :
- Une plage (
0
-5
) - Une liste (
1
,3
,5
) - Une fonction par paliers (par exemple,
*/3
dans le champ "heures" active la tâche toutes les trois heures)
- La première position correspond à la minute (
[TIME_ZONE]
Fuseau horaire que vous souhaitez utiliser pour planifier la promotion, au format IANA.
[TO_TARGET]
Il s'agit de l'
targetId
de la cible vers laquelle promouvoir la version, ou de@next
pour promouvoir automatiquement la version vers la cible suivante après celle spécifiée dansselector.targets property
dans cette configuration d'automatisation. Ce champ est facultatif. La valeur par défaut est@next
.[TO_PHASE]
Nom de la phase phase vers laquelle vous souhaitez promouvoir la version, par exemple
canary-25
oustable
. Cette propriété est facultative. Si vous l'omettez, la version est promue à la première phase de la cible.
Configurer une règle d'automatisation promoteReleaseRule
La règle promoteReleaseRule
promeut votre version après un déploiement réussi dans une cible. Par exemple, si vous avez trois cibles, vous pouvez configurer cette règle de sorte que, lorsque la version est déployée avec succès dans la première cible, elle soit automatiquement promue dans la deuxième cible.
Lorsque vous configurez une automatisation promoteReleaseRule
, vous pouvez spécifier une cible à promouvoir (destinationTargetId
) ou @next
. Lorsque le déploiement se termine correctement dans la cible spécifiée dans la définition Automation
, la version est ensuite promue vers la cible spécifiée dans destinationTargetId
, sous réserve d'un intervalle de temps wait
.
Vous pouvez également promouvoir une version vers une phase spécifique de la cible prévue à l'aide de la propriété destinationPhase
. La strophe rules
présentée ici doit être placée dans votre définition d'automatisation.
rules:
- promoteReleaseRule:
name: "[RULE_NAME]"
wait: [WAIT_TIME]
destinationTargetId: "[TO_TARGET]"
destinationPhase: "[TO_PHASE]"
Où :
[RULE_NAME]
est le nom que vous souhaitez donner à cette règle. Ce nom doit être unique dans la ressource d'automatisation.
[WAIT_TIME]
Il s'agit du temps d'attente, en minutes, après que la sortie est prête à être promue avant qu'elle ne le soit. Par exemple,
1m
.m
est obligatoire.La valeur par défaut est
0
, ce qui signifie qu'il n'y a pas de temps d'attente. La valeur maximale est de20160m
(ou 14 jours).[TO_TARGET]
targetId
de la cible à promouvoir.Il peut également s'agir de
@next
, qui promeut automatiquement la version vers la cible suivante après celle spécifiée dans la propriétéselector.targets
de cette configuration d'automatisation. Il s'agit de la valeur par défaut si vous omettez la valeur dedestinationTargetId
.[TO_PHASE]
Nom de la phase vers laquelle vous souhaitez promouvoir la phase actuelle, par exemple
canary-25
oustable
. Cette propriété est facultative. Si vous l'omettez, la version est promue à la première phase de la cible.
Configurer une règle d'automatisation advanceRolloutRule
advanceRolloutRule
fait passer automatiquement votre déploiement à la phase suivante une fois la phase en cours terminée. Cette règle d'automatisation est utile pour les déploiements Canary. Par exemple, si vous avez configuré une stratégie de déploiement canary sur une cible, avec des phases de 25%
, 50%
et stable
, vous pouvez configurer une règle d'automatisation qui fait passer automatiquement la phase à stable
une fois la phase 50%
terminée.
Lorsque vous configurez une automatisation advanceRolloutRule
, vous identifiez la phase à partir de laquelle avancer (le sourcePhase
). La strophe rules
présentée ici se trouve dans votre définition d'automatisation.
rules:
- advanceRolloutRule:
name: "[RULE_NAME]"
sourcePhases: ["[START_PHASE]", "[START_PHASE]"...]
wait: [WAIT_TIME]
Où :
[RULE_NAME]
est le nom que vous souhaitez donner à cette règle. Ce nom doit être unique dans le pipeline de déploiement.
[WAIT_TIME]
Il s'agit du temps d'attente, en minutes, avant de faire progresser le déploiement une fois qu'il est prêt. Par exemple,
1m
.m
est obligatoire.La valeur par défaut est
0
, ce qui signifie qu'il n'y a pas de temps d'attente. La valeur maximale est de20160m
(ou 14 jours).["[START_PHASE]", "[START_PHASE]"...]
Il s'agit de la ou des phases à partir desquelles le déploiement est automatiquement avancé. Autrement dit, lorsqu'une des phases listées se termine correctement, le déploiement passe automatiquement à la phase suivante.
Les noms de phases sont sensibles à la casse. De plus, ces noms de phases sont facultatifs. Si vous omettez
sourcePhases
, toutes les phases du déploiement sont automatiquement avancées.
Configurer une règle d'automatisation repairRolloutRule
La règle repairRolloutRule
relance un déploiement ayant échoué un nombre de fois spécifié. Si ce nombre de tentatives est épuisé, cette règle peut alors rétablir automatiquement la cible sur la dernière version réussie.
Lorsque vous configurez une automatisation repairRolloutRule
, vous pouvez spécifier le nombre de nouvelles tentatives de déploiement et le temps d'attente entre les tentatives. Vous pouvez également configurer des phases ou des jobs spécifiques, ou les deux, pour qu'ils soient relancés. Si chaque tentative échoue, le déploiement échoue. Si une nouvelle tentative aboutit, l'automatisation s'arrête et le déploiement réussit.
Vous pouvez éventuellement configurer l'automatisation pour revenir à la dernière version réussie sur la cible. Les nouvelles tentatives sont également facultatives, mais vous devez prévoir un certain nombre de nouvelles tentatives ou une restauration, ou les deux.
La strophe rules
présentée ici doit être placée dans votre définition d'automatisation.
rules:
- repairRolloutRule:
name: "[RULE_NAME]"
phases: [PHASES_TO_REPAIR]
jobs: [JOBS_TO_REPAIR]
repairPhases:
- retry:
attempts: [NUMBER_OF_ATTEMPTS]
wait: [WAIT_TIME]
backoffMode: [LINEAR | EXPONENTIAL]
- rollback:
destinationPhase: [PHASE_NAME]
Où :
[RULE_NAME]
est le nom que vous souhaitez donner à cette règle. Ce nom doit être unique dans le pipeline de déploiement.
[PHASES_TO_REPAIR]
Phase ou phases de déploiement à réessayer. Ce champ est facultatif. Par défaut, toutes les phases du déploiement sont incluses.
[JOBS_TO_REPAIR]
Il s'agit de la ou des tâches à réessayer. Cette option est facultative. Par défaut, tous les jobs sont inclus.
[NUMBER_OF_ATTEMPTS]
Facultatif : nombre de tentatives de déploiement avant de le considérer comme ayant échoué.
[WAIT_TIME]
correspond à la durée d'attente entre les nouvelles tentatives. Par exemple,
1m
pour un intervalle d'une minute. L'unité de temps (m
dans ce cas) est obligatoire.Si
mode
est défini surlinear
, cet intervalle est le même pour chaque nouvelle tentative. Simode
est défini surexponential
, l'intervalle augmente à chaque fois. (Pour en savoir plus, consultezmode
.)backoffMode
LINEAR
ouEXPONENTIAL
, indiquant s'il faut ou non augmenter le délai entre les tentatives. Si la valeur estLINEAR
, le délai entre les tentatives est constant et défini surWAIT_TIME
. Si la valeur estEXPONENTIAL
, le délai entre les nouvelles tentatives est doublé à chaque nouvelle tentative. La valeur par défaut estLINEAR
.Par exemple, si
WAIT_TIME
est défini sur 1 minute etbackoffMode
surEXPONENTIAL
, le délai entre l'échec et la première nouvelle tentative est de 1 minute, celui entre la première et la deuxième nouvelle tentative est de 2 minutes, et celui entre la deuxième et la troisième nouvelle tentative est de 4 minutes.rollback
Facultatif : indique si le déploiement ayant échoué doit être annulé une fois toutes les tentatives épuisées.
[PHASE_NAME]
Nom d'une phase spécifique vers laquelle vous souhaitez revenir. Si vous omettez
toPhase
, la restauration est définie par défaut sur la phasestable
.
Abandonner l'exécution d'une automatisation repairRolloutRule
Si vous exécutez l'une des commandes suivantes sur votre déploiement, l'automatisation repairRolloutRule
est abandonnée :
- Nouvelle tentative d'exécution du job
- Annuler le déploiement
- Ignorer le job
- Arrêter l'exécution du job
Exemple
Voici un exemple de configuration d'automatisation avec un repairRolloutRule
:
apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
name: regular-repair/regular
description: repair regular rollouts
suspended: false
serviceAccount: (REDACTED)
selector:
targets:
- id: t1
rules:
- repairRolloutRule:
name: "repair-rollout"
repairPhases:
- retry:
attempts: 3
wait: 1m
backoffMode: LINEAR
- rollback:
destinationPhase: "stable"
Dans cette automatisation, si un déploiement échoue sur la cible identifiée, il est relancé jusqu'à trois fois, avec une minute d'attente entre chaque tentative. Si toutes les tentatives échouent, un rollback est lancé en créant un déploiement pour déployer la dernière version réussie de la cible sur cette cible.
É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 l'automatisation du déploiement dans Cloud Deploy