Un déploiement Cloud Deploy s'effectue en plusieurs phases. Une phase est un regroupement logique et ordonné de tâches à effectuer dans un déploiement.
Chaque phase inclut des tâches, qui sont les actions à effectuer dans chaque phase (par exemple, deploy
ou verify
). Chaque tâche peut être exécutée ou non.
Une exécution de job est une instance d'une tâche. Si le job n'a pas été exécuté, aucun job n'est exécuté.
Ce document décrit les phases, les tâches et les exécutions de tâches, et explique 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.
Une stratégie de déploiement standard ne comporte qu'une seule phase: stable
.
Pour une stratégie de déploiement Canary, il existe une phase distincte pour chaque pourcentage configuré. Par exemple, si vous configurez une version Canary qui déploie 25%, 50%, puis 100%, le processus comporte trois phases:
canary-25
canary-50
stable
Ces noms de phase sont standards: canary-[PERCENTAGE]
pour les étapes Canary et stable
pour la phase à 100 %. Toutefois, si vous configurez une version Canary manuelle ou personnalisée, vous pouvez contrôler les noms des phases.
Jobs et exécutions de jobs
Chaque phase de déploiement comprend une ou plusieurs tâches.
Dans le cadre d'une stratégie de déploiement standard, sans validation du déploiement activée, il existe une phase (stable
).
Dans le cas d'un déploiement Canary, il existe une phase pour chaque partie de la version Canary (par exemple, canary-25
, canary-50
, stable
), et une tâche deploy
pour chaque phase. Si la vérification est activée, il existe également une tâche verify
pour chaque phase.
Une exécution de job est une instance d'une tâche. Par exemple, une tâche deploy
est exécutée. Si elle réussit, aucune autre tâche n'est exécutée pour cette tâche. En cas d'échec, vous pouvez réessayer l'exécution d'une autre tâche.
Ignorer des phases la première fois
Certaines stratégies de déploiement (par exemple, la version Canary) répartissent le trafic entre l'ancienne et la nouvelle version. Si vous effectuez un déploiement sur une cible pour la première fois, il n'existe pas d'ancienne version. Nous ne pouvons donc pas répartir le trafic.
Par conséquent, lorsque vous déployez une version Canary pour la première fois, nous ignorons la ou les phases Canary et exécutons la phase stable
. L'application est ensuite déployée. Les futurs déploiements Canary incluront les phases Canary.
Dans la réalité, vous exécuterez généralement un déploiement Canary dans lequel votre application est déjà en cours d'exécution. Il sera donc rare de sauter une phase.
États dans un déploiement
Les déploiements, les phases, les tâches et les exécutions de tâches ont tous un état. Cette section décrit les états de chacun d'entre eux.
États du déploiement
Un déploiement peut être associé à l'un des états suivants:
APPROVAL_REJECTED
Le déploiement nécessitait une approbation, mais elle a été refusée.
CANCELLED
État final des déploiements qui ont été annulés par un utilisateur.
CANCELLING
Un utilisateur a annulé le déploiement, mais le traitement de l'annulation n'est pas terminé.
HALTED
Dans un déploiement parallèle, si un ou plusieurs déploiements enfants échouent, mais qu'au moins un déploiement enfant réussit, le déploiement du contrôleur est INTERROMPÉ s'il y a plusieurs phases après le déploiement actuel.
Vous pouvez reprendre un déploiement interrompu du contrôleur en effectuant l'une des opérations suivantes:
Annuler le déploiement du contrôleur
Réessayer ou ignorer les jobs ayant échoué sur les déploiements enfants
IN_PROGRESS
Une exécution de job est en cours.
FAILED
Une tâche 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 à
IN_PROGRESS
ouCANCELED
.PENDING_APPROVAL
Le déploiement nécessite une approbation, mais n'a pas encore été approuvé.
PENDING_RELEASE
Le déploiement attend que la version soit affichée.
SUCCEEDED
Le déploiement est terminé, sans échec.
États des phases
Une phase peut être associée à 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 a bien été effectué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'une version Canary, Cloud Deploy passe à la phase
stable
lorsqu'il n'existe pas encore de version de l'application en cours d'exécution avec laquelle répartir le trafic. Dans ce cas, l'état est défini surSKIPPED
.
États du job
Une tâche peut présenter l'un des états suivants:
ABORTED
Si une phase échoue, les phases suivantes sont abandonnées.
Si une tâche échoue et que cet échec n'est pas ignoré, les tâches suivantes sont annulées. Par exemple, si une phase inclut une tâche de déploiement et une tâche de vérification, et que celle-ci échoue, la tâche de vérification est annulée.
DISABLED
Il est possible que certains jobs d'une phase soient désactivés. Par exemple, les phases incluent toujours des tâches de vérification, 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 de la tâche pour cette tâche.
IGNORED
L'exécution d'une tâche pour cette tâche a échoué, et l'utilisateur a choisi d'ignorer l'échec.
IN_PROGRESS
Une tâche est en cours d'exécution pour ce job.
PENDING
L'exécution de ce job attend de commencer, car une autre phase ou une autre tâche n'est pas terminée.
SKIPPED
Lorsque vous exécutez une stratégie de déploiement, telle qu'une version Canary, Cloud Deploy passe à la phase
stable
lorsqu'il n'existe pas encore de version de l'application en cours d'exécution avec laquelle répartir le trafic. Dans ce cas, l'état est défini surSKIPPED
pour les tâches se trouvant dans la ou les phases ignorées.SUCCEEDED
L'exécution du job s'est terminée avec succès, et le job suivant de la phase a commencé, ou la phase suivante a commencé ou est prête à démarrer (éventuellement en attente de l'utilisateur), 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 mis fin à l'exécution de la tâche, mais celle-ci n'est pas encore terminée.
SUCCEEDED
Lorsqu'une tâche se termine correctement, sans échouer ni être arrêtée par un utilisateur, elle passe à l'état
SUCCEEDED
, qui
Gérer votre déploiement
Avec la console Google Cloud ou Google Cloud SDK, vous pouvez effectuer les opérations suivantes dans le cadre d'un déploiement Cloud Deploy:
Si vous utilisez le déploiement en 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 avancer le déploiement d'une phase à l'autre.
Par exemple, si une cible est configurée pour effectuer un déploiement Canary simple avec des phases à 50% et stable
(100%), vous devez avancer le déploiement une seule 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 actuel que vous faites passer à la phase suivante.
RELEASE_NAME
est le nom de la version à laquelle ce déploiement fait partie.
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 la version a été créée, par exemple us-central1
. Ce champ est obligatoire.
Pour en savoir plus sur la commande gcloud deploy rollouts advance
, consultez la documentation de référence de Google Cloud SDK.
Console
Cliquez sur votre pipeline affiché dans la liste des pipelines de livraison.
La page d'informations du pipeline de livraison contient une représentation graphique de la progression de votre pipeline de livraison.
Dans l'onglet Déploiements, sous Informations sur le pipeline de livraison, cliquez sur le nom de votre déploiement.
La page d'informations 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 plusieurs phases ou différentes phases.Cliquez sur Avancer le déploiement.
Le déploiement est avancé à la phase suivante.
Annuler un déploiement
Vous pouvez annuler tout déploiement qui n'est pas terminé. Vous pouvez également annuler un déploiement ayant échoué pour empêcher d'autres actions (comme ignorer ou réessayer). Le déploiement doit se trouver dans l'un des états suivants:
FAILED
HALTED
IN_PROGRESS
PENDING
PENDING_APPROVAL
PENDING_RELEASE
Une fois que vous avez annulé un déploiement, celui-ci est à l'état CANCELLING
jusqu'à ce que toutes les exécutions en attente soient terminées. Vous pouvez arrêter les exécutions de tâches en attente que vous ne souhaitez pas attendre. Une fois le déploiement 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 actuel que vous faites passer à la phase suivante.
RELEASE_NAME
est le nom de la version à laquelle ce déploiement fait partie.
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 la version a été créée, par exemple us-central1
. Ce champ est obligatoire.
Pour en savoir plus sur la commande gcloud deploy rollouts cancel
, consultez la documentation de référence de Google Cloud SDK.
Console
Cliquez sur votre pipeline affiché dans la liste des pipelines de livraison.
La page d'informations du pipeline de livraison contient une représentation graphique de la progression de votre pipeline de livraison.
Dans l'onglet Déploiements, sous Informations sur le pipeline de livraison, cliquez sur le nom de votre déploiement.
La page d'informations 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 plusieurs phases ou différentes phases.Cliquez sur Annuler le déploiement.
Le déploiement est annulé.
Arrêter l'exécution d'un job
Vous pouvez mettre fin à une exécution de job en cours. Cela peut être utile, par exemple, si l'exécution d'une tâche 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 arrêter. Vous pouvez trouver l'ID d'exécution de la tâche dans la console Google Cloud. Pour Cloud Deploy, consultez la page de déploiement:
Vous pouvez également obtenir l'ID d'exécution de la tâche à l'aide de la commande gcloud deploy rollouts
describe
.
RELEASE_NAME
est le nom de la version à laquelle appartient l'exécution de cette tâche.
PIPELINE_NAME
est le nom du pipeline de livraison que vous utilisez pour gérer le déploiement de cette version.
ROLLOUT_NAME
est le nom du déploiement dont fait partie cette tâche.
REGION
est le nom de la région dans laquelle la version a été créée, par exemple us-central1
. Ce champ est obligatoire.
Pour en savoir plus sur la commande gcloud deploy job-runs terminate
, consultez la documentation de référence de Google Cloud SDK.
Console
Cliquez sur votre pipeline affiché dans la liste des pipelines de livraison.
La page d'informations du pipeline de livraison contient une représentation graphique de la progression de votre pipeline de livraison.
Dans l'onglet Déploiements, sous Informations sur le pipeline de livraison, cliquez sur le nom de votre déploiement.
La page d'informations 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.Sous Phases, cliquez sur la phase qui inclut la tâche dont vous souhaitez arrêter l'exécution.
Sous Exécutions de tâche, sélectionnez l'exécution de tâche spécifique à arrêter, puis cliquez sur Arrêter.
L'exécution de la tâche est terminée et l'état du job, comme indiqué dans la table Phases, est
Failure
.
Une fois l'exécution d'une tâche terminée, celle-ci est considérée comme ayant échoué et vous pouvez effectuer l'une des opérations suivantes:
- Laissez-le ainsi et ignorez le déploiement ayant échoué.
- Relancer le job
- Ignorer la tâche et passer à la tâche ou à la phase suivante du déploiement
Ignorer une tâche
Vous pouvez ignorer une tâche ayant échoué et passer immédiatement au job suivant de la phase. Cette tâche peut avoir échoué pour une raison quelconque, y compris par vous ou une autre personne l'avez arrêtée.
Une tâche ayant échoué signifie une phase ayant échoué et un échec du déploiement. Toutefois, si vous ignorez cet échec, la phase et le déploiement peuvent tous deux être progressés et, au final, 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 dont fait partie cette tâche.
RELEASE_NAME
est le nom de la version actuelle qui inclut cette tâche.
PIPELINE_NAME
est le nom du pipeline de livraison 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
est le nom de la phase qui inclut la tâche que vous ignorez.
REGION
est le nom de la région dans laquelle la 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 de Google Cloud SDK.
Console
Cliquez sur votre pipeline affiché dans la liste des pipelines de livraison.
La page d'informations du pipeline de livraison contient une représentation graphique de la progression de votre pipeline de livraison.
Dans l'onglet Déploiements, sous Informations sur le pipeline de livraison, cliquez sur le nom de votre déploiement.
La page d'informations du déploiement s'affiche.
Sélectionnez le job en échec à ignorer.
Cliquez sur le bouton Ignorer les échecs.
L'exécution du job ayant échoué est ignorée, et le déploiement se poursuit comme si la tâche avait réussi. Autrement dit, s'il existe d'autres tâches dans la même phase, elles sont exécutées. Sinon, le déploiement est prêt à passer à la phase suivante.
Relancer un job en échec
Vous pouvez relancer une exécution de 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 peut y avoir eu un échec d'autorisation.
Un utilisateur a mis fin à une tâche exécutée à partir de cette tâche.
L'arrêt d'une exécution entraîne l'échec de la tâche. Vous pouvez réessayer.
Échec d'un test de validation.
Pour une tâche de validation, un test de validation a échoué. Même si la tâche de validation s'est terminée correctement, l'un de vos tests a échoué. Nous l'avons propagé à 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 qui a é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 essayez à nouveau. Par exemple, si vous relancez la tâche de validation après l'échec d'une validation, ce champ est verify
.
RELEASE_NAME
est le nom de la version à laquelle appartient l'exécution de cette tâche.
PIPELINE_NAME
est le nom du pipeline de livraison que vous utilisez pour gérer le déploiement de cette version.
ROLLOUT_NAME
est le nom du déploiement dont fait partie cette tâche.
PHASE_ID
est le nom de la phase à laquelle cette tâche fait partie. Exemples : canary-50
ou stable
.
REGION
est le nom de la région dans laquelle la 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 de Google Cloud SDK.
Console
Cliquez sur votre pipeline affiché dans la liste des pipelines de livraison.
La page d'informations du pipeline de livraison contient une représentation graphique de la progression de votre pipeline de livraison.
Dans l'onglet Déploiements, sous Informations sur le pipeline de livraison, cliquez sur le nom de votre déploiement.
La page d'informations du déploiement s'affiche.
Sous Phases et tâches, cliquez sur la phase qui inclut la tâche que vous essayez à nouveau.
Sélectionnez le job à réessayer.
Cliquez sur Réessayer, puis confirmez l'opération.
L'exécution de la tâche est à nouveau exécutée et l'état du job, comme indiqué dans le tableau Phases, indique "en cours". S'il existe d'autres tâches dans la même phase, elles sont exécutées. Sinon, le déploiement est prêt à passer à la phase suivante.
Étapes suivantes
Découvrez le fonctionnement des stratégies de déploiement dans Cloud Deploy.
Consultez la documentation de l'architecture du service Cloud Deploy pour découvrir comment les déploiements, les phases, les tâches et les exécutions de tâches s'intègrent aux autres services Cloud Deploy.