Ce document décrit les règles d'automatisation, c'est-à-dire les actions qui peuvent être effectuées automatiquement sur votre pipeline de livraison. Par exemple, vous pouvez configurer votre le pipeline de livraison de manière à ce que la promotion dans une cible spécifique se produise automatiquement, dans les circonstances appropriées.
Vous ne pouvez utiliser que des 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 |
---|---|
promoteReleaseRule
|
Promeut automatiquement une version dans la cible indiquée en cas de réussite
déployer dans la cible précédente dans la progression. |
advanceRolloutRule
|
Avance automatiquement un déploiement à partir de la ligne indiquée
phase, à la phase suivante. |
repairRolloutRule
|
Relancer automatiquement le ou les jobs ayant échoué lors du déploiement
le nombre de fois spécifié et effectuer 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 concernée. Cette section décrit la configuration commune à toutes les règles, ainsi que la configuration de chacune des règles disponibles.
Les sections suivantes décrivent la configuration spécifique à chaque automatisation des règles de pare-feu. Consultez la page Automatiser votre déploiement. pour la configuration de l'automatisation elle-même.
Configurer une règle d'automatisation promoteReleaseRule
La règle promoteReleaseRule
met en avant 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 afin que, lorsque la version est déployée avec succès dans la première cible, elle soit automatiquement promue vers la deuxième cible.
Lorsque vous configurez une automatisation promoteReleaseRule
, vous pouvez spécifier
cible à promouvoir sur (destinationTargetId
) ou @next
. Lorsque le déploiement se termine avec succès 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 souhaitée à l'aide de la propriété destinationPhase
.
rules:
- promoteReleaseRule:
name: "[RULE_NAME]"
wait: [WAIT_TIME]
destinationTargetId: "[TO_TARGET]"
destinationPhase: "[TO_PHASE]"
Où :
[RULE_NAME]
Nom que vous souhaitez attribuer à cette règle. Ce nom doit être unique dans le ressource d'automatisation de l'IA.
[WAIT_TIME]
Indique le délai d'attente (en minutes) après la publication de la version avant qu'elle ne soit promue. Par exemple,
1m
.m
est obligatoire.La valeur par défaut est
0
, ou aucun temps d'attente. La valeur maximale est20160m
(ou 14 jours).[TO_TARGET]
Il s'agit de l'
targetId
de la cible à promouvoir.Il peut également s'agir de
@next
, qui promeut automatiquement la version vers la cible suivante après la cible spécifiée dans la propriétéselector.targets
dans cette configuration d'automatisation. Il s'agit du paramètre par défaut omettez la valeur dedestinationTargetId
.[TO_PHASE]
Indique le nom de la phase à laquelle vous souhaitez promouvoir la phase, par exemple
canary-25
oustable
. Cette propriété est facultative. si vous l'omettez, la version est promu à la première phase de la cible.
Configurer une règle d'automatisation advanceRolloutRule
Une fois qu'une phase est terminée, advanceRolloutRule
passe automatiquement à la phase suivante. Cette règle d'automatisation est utile
les déploiements Canary. Par exemple, si vous avez configuré une stratégie de déploiement Canary sur une cible, avec des phases 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 vous souhaitez avancer (sourcePhase
).
rules:
- advanceRolloutRule:
name: "[RULE_NAME]"
sourcePhases: ["[START_PHASE]", "[START_PHASE]"...]
wait: [WAIT_TIME]
Où :
[RULE_NAME]
Nom que vous souhaitez attribuer à cette règle. Ce nom doit être unique dans le de livraison.
[WAIT_TIME]
Temps d'attente, en minutes, avant l'avancement du déploiement le déploiement est prêt. Par exemple,
1m
.m
est obligatoire.La valeur par défaut est
0
, ou aucun temps d'attente. La valeur maximale est20160m
(ou 14 jours).["[START_PHASE]", "[START_PHASE]"...]
Indique la ou les phases à partir desquelles le déploiement est automatiquement avancé. Autrement dit, lorsque l'une des phases listées se termine avec succès, le déploiement est passe automatiquement de cette phase à la phase suivante.
Les noms de phases sont sensibles à la casse. De plus, ces noms de phase 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 le nombre de tentatives est atteint, la règle peut
effectuer un rollback de la cible vers 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 délai d'attente entre les tentatives. Vous pouvez également configurer des phases ou des tâches spécifiques, ou les deux, pour qu'elles soient réessayées. Si chaque tentative de nouvelle 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 qu'elle revienne à la dernière version réussie sur la cible. Il n'est pas obligatoire d'effectuer de nouvelles tentatives, un certain nombre de tentatives ou un rollback, ou les deux.
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]
Nom que vous souhaitez attribuer à cette règle. Ce nom doit être unique dans le de livraison.
[PHASES_TO_REPAIR]
correspond à la ou aux phases de déploiement à relancer. Ce paramètre est facultatif et la valeur par défaut est "Toutes les phases du déploiement".
[JOBS_TO_REPAIR]
Il s'agit de la ou des tâches à relancer. Cette option est facultative et la valeur par défaut est "Toutes les tâches".
[NUMBER_OF_ATTEMPTS]
Facultatif : nombre de tentatives d'exécution du déploiement avant de le considérer comme ayant échoué.
[WAIT_TIME]
Indique 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
estlinear
, cet intervalle est le même pour chaque nouvelle tentative. Simode
estexponential
, l'intervalle augmente à chaque fois. (Pour en savoir plus, consultezmode
.)backoffMode
LINEAR
ouEXPONENTIAL
, indiquant s'il faut ou non augmenter l'heure entre les retraits. Si la valeur estLINEAR
, le délai entre les tentatives est constant.WAIT_TIME
SiEXPONENTIAL
, le délai entre les nouvelles tentatives est doublé à chaque tentative. La valeur par défaut estLINEAR
.Par exemple, si
WAIT_TIME
correspond à 1 m et quebackoffMode
est défini surEXPONENTIAL
, alors le délai entre l'échec et la première tentative est d'une minute, ce qui correspond entre la première et la deuxième tentative est de 2 minutes, et le délai entre la deuxième et la troisième tentative dure 4 minutes.rollback
Facultatif : indique si le déploiement ayant échoué doit être annulé une fois toutes les tentatives de nouvelle tentative épuisées.
[PHASE_NAME]
Nom d'une phase spécifique à laquelle vous souhaitez revenir. Si vous omettez
toPhase
, le rollback est défini par défaut sur la phasestable
.
Annuler une exécution d'automatisation repairRolloutRule
Si vous exécutez l'une des commandes suivantes lors de votre déploiement, l'automatisation repairRolloutRule
est interrompue :
Exemple
Voici un exemple de configuration d'automatisation avec
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 attente d'une minute entre chaque tentative. Si tous les nouvelles tentatives échouent, un rollback est lancé en créant un déploiement la dernière version réussie de la cible sur cette cible.
É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 l'automatisation du déploiement dans Cloud Deploy