Le déploiement de Cloud Deploy comprend des phases. Une phase est un regroupement logique et ordonné des tâches à effectuer lors d'un déploiement.
Chaque phase comprend des jobs, c'est-à-dire des actions à entreprendre dans chaque phase (par
Exemple : deploy
ou verify
). Chaque job peut comporter plusieurs exécutions de job.
Une exécution de job est une instance de job. Si la tâche n'a pas été exécutée, aucune exécution de tâche n'est effectuée.
Ce document décrit les phases, jobs ; exécutions de tâches et comment les gérer.
Structure d'un déploiement
Un déploiement est une ressource Cloud Deploy qui associe une version à une cible.
Phases
Un déploiement comprend une ou plusieurs phases.
Pour une stratégie de déploiement standard,
ne comporte qu'une seule phase: stable
.
Pour une stratégie de déploiement canari, une phase distincte est définie pour chaque pourcentage configuré. Par exemple, si vous configurez un canari qui se déploie à 25 %, puis à 50 %, puis à 100 %, trois phases sont prévues :
canary-25
canary-50
stable
Ces noms de phase sont standards: canary-[PERCENTAGE]
pour les phases Canary et
stable
pour la phase à 100 %. Toutefois, si vous configurez un canari manuel ou personnalisé, vous pouvez contrôler les noms de phase.
Jobs et exécutions de jobs
Chaque phase de déploiement comprend une ou plusieurs tâches.
Pour un déploiement standard
sans vérification du déploiement, une phase
(stable
).
Pour un déploiement Canary, il y a une phase pour chaque partie du canary (par exemple, canary-25
, canary-50
, stable
), et pour chaque phase, il existe une tâche deploy
. Si la validation est activée, une tâche verify
est également disponible pour chaque
à chaque phase.
Une exécution de tâche est une instance de tâche. Par exemple, une exécution de tâche pour une tâche deploy
est exécutée. Si elle aboutit, aucune autre exécution de tâche n'est effectuée pour cette tâche. Si elle échoue, elle peut être réessayée lors d'une autre exécution de tâche.
Ignorer les phases la première fois
Certaines stratégies de déploiement (par exemple, Canary) répartissent le trafic entre l'ancienne et la nouvelle version. Si vous déployez une application sur une cible pour la première fois, il n'y a pas d'ancienne version. Nous ne pouvons donc pas répartir le trafic.
C'est pourquoi, lorsque vous déployez un canari pour la première fois, nous ignorons la ou les phases de canari et exécutons la phase stable
. Ensuite, l'application est déployée, et les futurs déploiements Canary incluront les phases Canary.
Dans une situation réelle, vous exécuterez généralement un déploiement Canary lorsque votre application est déjà en cours d'exécution. Par conséquent, cette étape sera rarement ignorée.
États d'un déploiement
Les déploiements, les phases, les jobs et les exécutions de jobs ont tous des états. Cette section décrit les pour chacun d'entre eux.
États de déploiement
Un déploiement est associé à l'un des états suivants:
APPROVAL_REJECTED
Le déploiement nécessitait une approbation, mais l'approbation a été refusée.
CANCELLED
L'état final des déploiements qui ont été annulés par un utilisateur.
CANCELLING
Un utilisateur a annulé le déploiement, mais l'annulation n'est pas terminée en cours de traitement.
HALTED
Dans un déploiement parallèle, si un ou plusieurs enfants déploiements échouent, mais au moins un déploiement enfant réussit, déploiement du contrôleur est HALTED s'il y a plusieurs phases après la phase actuelle.
Pour reprendre le déploiement d'un contrôleur interrompu, procédez comme suit :
Annuler le déploiement de la manette
Réessayer ou ignorer les tâches ayant échoué sur les déploiements enfants
IN_PROGRESS
Une exécution de tâche est en cours.
FAILED
Un job a échoué et l'utilisateur n'a pas choisi d'ignorer l'échec.
PENDING
Le traitement du déploiement n'a pas commencé. Cet état passe ensuite à
IN_PROGRESS
ouCANCELED
.PENDING_APPROVAL
Le déploiement requiert une approbation, mais qu'elle n'a pas encore été approuvée.
PENDING_RELEASE
Le déploiement est en attente jusqu'à ce que la version soit rendue.
SUCCEEDED
Le déploiement est terminé, sans échec.
États de la phase
Une phase peut avoir l'un des états suivants :
PENDING
La phase attend la fin d'une autre phase du déploiement.
IN_PROGRESS
La phase a commencé.
SUCCEEDED
La phase est terminée.
FAILED
Une tâche de la phase a échoué et l'utilisateur n'a pas choisi d'ignorer l'échec.
ABORTED
Une phase précédente a échoué.
SKIPPED
Lorsque vous exécutez une stratégie de déploiement, telle qu'un canary, Cloud Deploy passe à la phase
stable
lorsqu'il n'existe pas encore de version en cours d'exécution de l'application avec laquelle diviser le trafic. Dans ce cas, l'état est défini surSKIPPED
.
États des jobs
Une tâche peut présenter l'un des états suivants :
ABORTED
Si une phase échoue, les phases suivantes sont annulées.
Si une tâche échoue et que cet échec n'est pas ignoré, les modifications suivantes tâches sont annulées. Par exemple, si une phase inclut une tâche de déploiement et une tâche de validation, et que la tâche de déploiement échoue, la tâche de validation est interrompue.
DISABLED
Certaines tâches d'une phase peuvent être désactivées. Par exemple, les phases incluent toujours des tâches de validation, que la validation soit activée ou non. Si la validation n'est pas activée, la tâche de validation est définie sur
DISABLED
.FAILED
L'exécution d'une tâche pour cette tâche a échoué, et l'utilisateur n'a pas choisi d'ignorer l'échec.
L'utilisateur a choisi d'arrêter l'exécution du job pour ce job.
IGNORED
L'exécution d'un job a échoué et l'utilisateur a choisi de ignorer l'échec.
IN_PROGRESS
Une exécution de tâche est actuellement en cours.
PENDING
Le job exécuté pour ce job attend de commencer, car une autre phase ou tâche n'est pas terminée.
SKIPPED
Lorsque vous exécutez une stratégie de déploiement, telle qu'un canary, Cloud Deploy passe à la phase
stable
lorsqu'il n'existe pas encore de version en cours d'exécution de l'application avec laquelle diviser le trafic. Dans ce cas, l'état est défini surSKIPPED
pour les jobs de la ou des phases ignorées.SUCCEEDED
L'exécution de la tâche s'est terminée correctement, et la tâche suivante de la phase a commencé, ou la phase suivante a commencé ou est prête à commencer (en attente de l'entrée utilisateur, par exemple), ou le déploiement est terminé.
États d'exécution du job
FAILED
L'exécution du job a échoué.
IN_PROGRESS
L'exécution du job a commencé, mais n'est pas terminée.
TERMINATED
L'utilisateur a arrêté l'exécution du job.
TERMINATING
L'utilisateur a arrêté l'exécution du job, mais celui-ci ne s'est pas terminé est en cours d'arrêt.
SUCCEEDED
Lorsqu'un job se termine correctement, sans échec ni être arrêté par un utilisateur, elle passe à l'état
SUCCEEDED
, ce qui
Gérer votre déploiement
À l'aide de la console Google Cloud ou de Google Cloud SDK, vous pouvez par un déploiement Cloud Deploy:
Si vous utilisez un déploiement parallèle avec une stratégie de déploiement Canary, consultez ce document.
Avancer un déploiement
Pour les cibles configurées pour utiliser une stratégie de déploiement autre que "standard", vous devez faire avancer le déploiement d’une phase à l’autre.
Par exemple, si vous avez configuré une cible pour effectuer un déploiement Canary simple avec les phases 50 % et stable
(100 %) uniquement, vous devrez avancer le déploiement une fois, de la phase canary-50
à la phase stable
(100 %).
gcloud
gcloud deploy rollouts advance ROLLOUT_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION
Où :
ROLLOUT_NAME
est le nom du déploiement en cours que vous passez à la phase suivante.
RELEASE_NAME
est le nom de la version
dont fait partie le déploiement.
PIPELINE_NAME
est le nom du pipeline de livraison.
que vous utilisez pour gérer le déploiement de cette version.
REGION
correspond au nom de la région dans laquelle la version a été créée, par exemple us-central1
. Ce champ est obligatoire.
Consultez la documentation de référence de Google Cloud SDK pour en savoir plus sur
Commande gcloud deploy rollouts advance
Console
Cliquez sur votre pipeline dans la liste des pipelines de diffusion.
La page "Détails du pipeline de diffusion" affiche une représentation graphique de la progression de votre pipeline de diffusion.
Dans l'onglet Déploiements, sous Détails du pipeline de livraison, cliquez sur le nom de votre déploiement.
La page des détails du déploiement s'affiche.
Notez que dans cet exemple, le déploiement comporte une phase
canary-50
et une phasestable
. Votre déploiement peut comporter plus de phases ou des phases différentes.Cliquez sur Avancer le déploiement.
Le déploiement passe à la phase suivante.
Annuler un déploiement
Vous pouvez annuler tout déploiement qui n'est pas terminé. Vous pouvez aussi annuler une demande déployer pour empêcher d'autres actions le concernant (ignorer ou réessayer, par exemple). Le déploiement doit présenter l'un des états suivants:
FAILED
HALTED
IN_PROGRESS
PENDING
PENDING_APPROVAL
PENDING_RELEASE
Lorsque vous annulez un déploiement, celui-ci est à l'état CANCELLING
jusqu'à ce que toutes les
les exécutions de jobs en cours sont terminées. Vous pouvez arrêter les exécutions de tâches en attente que vous ne souhaitez pas attendre. Une fois que le déploiement est
CANCELLED
, il ne peut plus être avancé ni modifié.
Pour annuler un déploiement :
gcloud
gcloud deploy rollouts cancel ROLLOUT_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION
Où :
ROLLOUT_NAME
est le nom du déploiement en cours que vous passez à la phase suivante.
RELEASE_NAME
est le nom de la version
dont fait partie le déploiement.
PIPELINE_NAME
est le nom du pipeline de livraison.
que vous utilisez pour gérer le déploiement de cette version.
REGION
est le nom de la région dans laquelle
version a été créée, par exemple us-central1
. Ce champ est obligatoire.
Consultez la documentation de référence de Google Cloud SDK pour en savoir plus sur
Commande gcloud deploy rollouts cancel
Console
Cliquez sur le pipeline qui s'affiche dans la liste des pipelines de livraison.
La page "Détails du pipeline de diffusion" affiche une représentation graphique de la progression de votre pipeline de diffusion.
Dans l'onglet Déploiements, sous Détails du pipeline de livraison, cliquez sur le nom de votre déploiement.
La page des détails du déploiement s'affiche.
Notez que, dans cet exemple, le déploiement comporte une phase
canary-50
et unstable
. Votre déploiement peut comporter plus de phases ou des phases différentes.Cliquez sur Annuler le déploiement.
Le déploiement est annulé.
Arrêter l'exécution d'un job
Vous pouvez mettre fin à l'exécution d'un job en cours. Vous pourriez vouloir le faire,
par exemple, si l'exécution d'un job semble prendre trop de temps ou ne fonctionne pas
comme prévu. L'exécution du job doit être IN_PROGRESS
pour que vous puissiez l'arrêter.
gcloud
gcloud deploy job-runs terminate JOB_RUN_ID \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--rollout=ROLLOUT_NAME \
--region=REGION
Où :
JOB_RUN_ID
est l'UUID de l'exécution de la tâche que vous souhaitez exécuter.
mettre fin. Vous pouvez trouver l'ID d'exécution de la tâche dans la console Google Cloud, pour Cloud Deploy, sur la page de déploiement :
Vous pouvez également obtenir l'ID des exécutions de tâches à l'aide de la commande gcloud deploy rollouts
describe
.
RELEASE_NAME
est le nom de la version
l'exécution du job.
PIPELINE_NAME
est le nom du pipeline de diffusion que vous utilisez pour gérer le déploiement de cette version.
ROLLOUT_NAME
est le nom du déploiement auquel cette exécution de tâche appartient.
REGION
correspond au nom de la région dans laquelle la version a été créée, par exemple us-central1
. Ce champ est obligatoire.
Consultez la documentation de référence de Google Cloud SDK pour en savoir plus sur
Commande gcloud deploy job-runs terminate
Console
Cliquez sur le pipeline qui s'affiche dans la liste des pipelines de livraison.
La page "Détails du pipeline de diffusion" affiche une représentation graphique de la progression de votre pipeline de diffusion.
Dans l'onglet Déploiements, sous Détails du pipeline de diffusion, cliquez sur le nom de votre déploiement.
La page des détails du déploiement s'affiche.
Notez que, dans cet exemple, le déploiement comporte une phase
canary-50
et unstable
. Votre déploiement peut comporter plus de phases ou des phases différentes.Sous Phases, cliquez sur la phase qui inclut la tâche dont vous mettez fin à l'exécution.
Sous Exécutions de la tâche, sélectionnez l'exécution de la tâche à arrêter, puis cliquez sur Arrêter.
L'exécution de la tâche est arrêtée, et son état, comme indiqué dans le tableau Phases, est
Failure
.
Une fois que vous avez arrêté l'exécution d'un job, celui-ci est considéré comme ayant échoué. Vous pouvez effectuer les des éléments suivants:
- Laissez-le tel quel et ignorez le déploiement ayant échoué.
- Relancer le job
- Ignorer le job et passer à la tâche ou à la phase suivante du déploiement
Ignorer une tâche
Vous pouvez ignorer un job ayant échoué et passer immédiatement au job suivant de la phase. Cette tâche a peut-être échoué pour une raison quelconque, par exemple si vous ou quelqu'un d'autre avez arrêté l'exécution de cette tâche.
Une tâche ayant échoué signifie qu'une phase et un déploiement ont échoué. Toutefois, si vous ignorez l'échec, la phase et le déploiement peuvent progresser et peuvent finalement avoir des états SUCCEEDED
.
gcloud
gcloud deploy rollouts ignore-job ROLLOUT_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--job-id=JOB_ID \
--phase-id=PHASE_ID \
--region=REGION
Où :
ROLLOUT_NAME
est le nom du déploiement auquel cette exécution de tâche appartient.
RELEASE_NAME
est le nom de la version actuelle.
qui inclut ce travail.
PIPELINE_NAME
est le nom du pipeline de diffusion que vous utilisez pour gérer le déploiement de cette version.
JOB_ID
est le nom de la tâche à ignorer, par exemple DEPLOY
. Vous trouverez le nom de la tâche dans le tableau Phases du déploiement, dans la console Google Cloud :
PHASE_ID
correspond au nom de la phase qui inclut la tâche que vous ignorez.
REGION
est le nom de la région dans laquelle
version a été créée, par exemple us-central1
.
Pour en savoir plus sur la commande gcloud deploy rollouts ignore-job
, consultez la documentation de référence du SDK Google Cloud.
Console
Cliquez sur le pipeline qui s'affiche dans la liste des pipelines de livraison.
La page "Détails du pipeline de diffusion" affiche une représentation graphique de la progression de votre pipeline de diffusion.
Dans l'onglet Déploiements, sous Détails du pipeline de diffusion, cliquez sur le nom de votre déploiement.
La page des détails du déploiement s'affiche.
Sélectionnez la tâche en échec à ignorer.
Cliquez sur le bouton Ignorer les échecs.
L'exécution du job en échec est ignorée, et le déploiement se poursuit comme si le job avait réussi. Autrement dit, s'il y a d'autres jobs dans la même phase, sont exécutés. Sinon, le déploiement est prêt à passer au à chaque phase.
Réessayer un job en échec
Vous pouvez relancer l'exécution d'un job qui a échoué. La tâche peut échouer pour l'une des raisons suivantes :
Échec de l'exécution d'un job.
Par exemple, il se peut qu'un échec d'autorisation se soit produit.
Un utilisateur a arrêté l'exécution d'une tâche à partir de cette tâche.
Si vous arrêtez une exécution de tâche, celle-ci échoue et vous pouvez la relancer.
Échec du test de validation.
Un test de validation a échoué pour une tâche de validation. Même si la tâche de validation s'est terminée correctement, l'un de vos tests de validation a échoué. Nous le propageons à la tâche de validation. Dans ce cas, vous devez relancer la tâche dans le cadre du débogage du test ayant échoué sur votre application.
Pour relancer une tâche ayant échoué :
gcloud
gcloud deploy rollouts retry-job JOB_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--rollout=ROLLOUT_NAME \
--phase=PHASE_ID \
--region=REGION
Où :
JOB_NAME
est le nom de la tâche que vous réessayez. Par exemple, si vous relancez la tâche de validation après un échec de validation, la valeur est verify
.
RELEASE_NAME
est le nom de la version à laquelle appartient cette exécution de tâche.
PIPELINE_NAME
est le nom du pipeline de diffusion que vous utilisez pour gérer le déploiement de cette version.
ROLLOUT_NAME
est le nom du déploiement auquel cette exécution de tâche appartient.
PHASE_ID
est le nom de la phase à laquelle cette tâche appartient. Exemples : canary-50
ou stable
.
REGION
est le nom de la région dans laquelle
version a été créée, par exemple us-central1
. Ce champ est obligatoire.
Pour en savoir plus sur la commande gcloud deploy rollouts retry-job
, consultez la documentation de référence du SDK Google Cloud.
Console
Cliquez sur votre pipeline dans la liste des pipelines de diffusion.
La page "Détails du pipeline de livraison" affiche une représentation graphique de la progression du pipeline de livraison.
Dans l'onglet Déploiements, sous Détails du pipeline de livraison, cliquez sur le bouton nom de votre déploiement.
La page d'informations de ce déploiement s'affiche.
Sous Phases et tâches, cliquez sur la phase qui inclut la tâche que vous réessayez.
Sélectionnez la tâche à réessayer.
Cliquez sur Réessayer, puis confirmez l'opération.
L'exécution de la tâche est à nouveau exécutée et son état, comme indiqué dans le tableau Phases, est "En cours". S'il y a d'autres emplois dans le même sont exécutées. Sinon, le déploiement est prêt à passer à la phase suivante.
Étape suivante
Découvrez le fonctionnement des stratégies de déploiement dans Cloud Deploy.
Pour en savoir plus sur l'intégration des déploiements, des phases, des jobs et des exécutions de jobs au reste de Cloud Deploy, consultez la documentation sur l'architecture du service Cloud Deploy.