Un déploiement Cloud Deploy comprend plusieurs phases. Une phase est un groupe logique et ordonné de tâches à effectuer lors d'un déploiement.
Chaque phase comprend des tâches, qui correspondent aux actions à effectuer à chaque phase (par exemple, deploy
ou verify
). De plus, chaque tâche peut avoir zéro ou plusieurs exécutions de tâche.
Une tâche est une instance de tâche. Si la tâche n'a pas été exécutée, il n'y a aucune exécution.
Ce document décrit les phases, les tâches et les exécutions de tâches, ainsi que la manière de les gérer.
Structure d'un déploiement
Un déploiement est une ressource Cloud Deploy qui associe une version à une cible.
Phases
Le déploiement comprend une ou plusieurs phases.
Pour une stratégie de déploiement standard, il n'y a 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 un déploiement Canary qui déploie 25%, 50%, puis 100%, il y aura trois phases:
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 Canary manuel ou personnalisé, vous pouvez contrôler les noms des phases.
Tâches et exécutions de tâches
Chaque phase de déploiement comprend une ou plusieurs tâches.
Pour un déploiement dans une stratégie de déploiement standard, sans validation de déploiement activée, une phase (stable
) est effectuée.
Dans un déploiement Canary, une phase est créée pour chaque partie de la version Canary (par exemple, canary-25
, canary-50
ou stable
). Chaque phase comporte une tâche deploy
. Si la validation est activée, il existe également une tâche verify
pour chaque phase.
Une tâche est une instance de tâche. Par exemple, une tâche exécutée pour une tâche deploy
est exécutée. Si elle aboutit, aucune autre exécution n'est effectuée pour cette tâche. En cas d'échec, vous pouvez réessayer.
Ignorer des phases pour 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 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.
Pour cette raison, lorsque vous déployez une version Canary pour la première fois, nous ignorons la ou les phases Canary, et nous exécutons la phase stable
. Après cela, l'application est déployée et les futurs déploiements Canary incluront les phases Canary.
En situation réelle, vous exécuterez généralement un déploiement Canary où votre application est déjà en cours d'exécution. Ce saut de phase est donc rare.
États dans un déploiement
Les déploiements, les phases, les tâches et les exécutions de tâches présentent tous des états. Cette section décrit les différents états.
États de déploiement
Un déploiement peut présenter l'un des états suivants:
APPROVAL_REJECTED
Le déploiement nécessitait une approbation requise, mais a été refusée.
CANCELLED
État final des déploiements annulés par un utilisateur.
CANCELLING
Un utilisateur a annulé le déploiement, mais le traitement n'est pas terminé.
HALTED
Dans un déploiement parallèle, en cas d'échec d'un ou de plusieurs déploiements enfants, mais qu'au moins un déploiement enfant réussit, le déploiement du contrôleur est HALTÉ s'il y a plusieurs phases après le déploiement actuel.
Vous pouvez reprendre un déploiement de la manette interrompu:
Annuler le déploiement de la manette
Réessayer ou ignorer les tâches ayant échoué lors des déploiements enfants
IN_PROGRESS
Une exécution de tâche est en cours de traitement.
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 encore 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 l'affichage de la version.
SUCCEEDED
Le déploiement est terminé, sans échec.
États de la phase
Une phase peut présenter l'un des états suivants:
PENDING
Cette phase est en attente d'une autre phase du déploiement.
IN_PROGRESS
La phase a commencé.
SUCCEEDED
La phase s'est terminée avec succès.
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 stratégie 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 répartir le trafic. Dans ce cas, l'état est défini surSKIPPED
.
États des tâches
Une tâche présente l'un des états suivants:
ABORTED
Si une phase échoue, les phases suivantes sont annulées.
Si une tâche échoue et que l'échec n'est pas ignoré, les tâches suivantes sont annulées. Par exemple, si une phase comprend 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 annulée.
DISABLED
Certaines tâches d'une phase peuvent être désactivées. Par exemple, les phases incluent toujours les 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
Une tâche exécutée 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.
IGNORED
Une tâche exécutée pour cette tâche a échoué. L'utilisateur a choisi d'ignorer l'échec.
IN_PROGRESS
Une tâche exécutée actuellement est en cours d'exécution.
PENDING
La tâche exécutée pour cette tâche est en attente de démarrage, 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'une stratégie 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 répartir le trafic. Dans ce cas, l'état est défini surSKIPPED
pour les tâches correspondant à la phase ou aux phases ignorées.SUCCEEDED
La tâche s'est terminée avec succès, et la tâche suivante a commencé, la phase suivante a commencé ou est prête à commencer (il est possible que des entrées utilisateur soient en attente), ou le déploiement est terminé.
États d'exécution de la tâche
FAILED
Échec de l'exécution de la tâche pendant l'exécution.
IN_PROGRESS
L'exécution de la tâche a commencé, mais n'est pas terminée.
TERMINATED
L'utilisateur a arrêté l'exécution de la tâche.
TERMINATING
L'utilisateur a terminé l'exécution de la tâche, mais celle-ci n'est pas encore terminée.
SUCCEEDED
Lorsqu'une tâche s'exécute correctement, sans échec ni arrêt pour un utilisateur, elle passe à l'état
SUCCEEDED
.
Gérer votre déploiement
À l'aide de la console Google Cloud ou de Google Cloud SDK, vous pouvez effectuer les opérations suivantes avec 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 avancer le déploiement de phase en phase.
Par exemple, si une cible est configurée pour effectuer un déploiement Canary simple avec des phases de 50% et stable
(100%), 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 actuel que vous avancez dans la phase suivante.
RELEASE_NAME
est le nom de la version dont fait partie ce 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 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 dans la liste.
La page d'informations du pipeline de livraison affiche une représentation graphique de la progression de votre pipeline de livraison.
Dans l'onglet Déploiements, sous Détails du 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 ou moins de phases.Cliquez sur Avancer le déploiement.
Le déploiement est avancé à la phase suivante.
Annuler un déploiement
Vous pouvez annuler un déploiement qui n'est pas terminé. Vous pouvez également annuler un déploiement ayant échoué pour éviter d'autres actions (par exemple, ignorer ou réessayer). 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 exécutions de tâches en attente soient terminées. Vous pouvez mettre fin aux exécutions de tâches en attente que vous ne souhaitez pas attendre. Une fois que le déploiement aura été CANCELLED
, vous ne pourrez plus le modifier ni le modifier.
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 avancez dans la phase suivante.
RELEASE_NAME
est le nom de la version dont fait partie ce 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 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 dans la liste.
La page d'informations du pipeline de livraison affiche une représentation graphique de la progression de votre pipeline de livraison.
Dans l'onglet Déploiements, sous Détails du 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 ou moins de phases.Cliquez sur Annuler le déploiement.
Le déploiement est annulé.
Arrêter une exécution de tâche
Vous pouvez arrêter une exécution de tâche en cours. Cela peut être utile, par exemple, si une exécution de tâche semble prendre trop de temps ou ne fonctionne pas comme prévu. La tâche 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 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 sur 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 dont fait partie cette exécution de 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 auquel cette tâche s'exécute.
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 dans la liste.
La page d'informations du pipeline de livraison affiche une représentation graphique de la progression de votre pipeline de livraison.
Dans l'onglet Déploiements, sous Détails du 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.Sous Phases, cliquez sur la phase incluant la tâche dont vous arrêtez le job.
Sous Exécutions de tâche, sélectionnez l'exécution spécifique que vous souhaitez arrêter, puis cliquez sur Arrêter.
L'exécution de la tâche est arrêtée, et l'état de la tâche, comme indiqué dans le tableau Phases, est
Failure
.
Une fois l'exécution d'un job arrêtée, celui-ci est considéré comme ayant échoué et vous pouvez effectuer l'une des opérations suivantes:
- Ne pas modifier et ignorer le déploiement ayant échoué
- Relancer la tâche
- Ignorez la tâche et passez à la tâche ou à la phase suivante du déploiement.
Ignorer une tâche
Vous pouvez ignorer une tâche en échec et passer immédiatement à la tâche suivante de la phase. Cette tâche peut avoir échoué pour une raison quelconque, y compris vous ou une autre personne avez arrêté une exécution de cette tâche.
Une tâche ayant échoué signifie une phase ayant échoué et un déploiement ayant échoué. Toutefois, si vous ignorez l'échec, la phase et le déploiement peuvent être suivis et peuvent finir par être associés à 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 tâche s'exécute.
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 dans la liste.
La page d'informations du pipeline de livraison affiche une représentation graphique de la progression de votre pipeline de livraison.
Dans l'onglet Déploiements, sous Détails du pipeline de livraison, cliquez sur le nom de votre déploiement.
La page d'informations du déploiement s'affiche.
Sélectionnez la tâche ayant échoué.
Cliquez sur le bouton Ignorer les échecs.
L'exécution de la tâche ayant échoué est ignorée, et le déploiement se poursuit comme si la tâche avait réussi. Autrement dit, si d'autres tâches se trouvent dans la même phase, elles sont exécutées. Sinon, le déploiement est prêt à passer à la phase suivante.
Réessayer une tâche ayant échoué
Vous pouvez relancer une exécution de tâche ayant échoué. La tâche peut échouer pour l'une des raisons suivantes:
Échec de l'exécution d'une tâche.
Par exemple, il est possible qu'une erreur d'autorisation ait eu lieu.
Un utilisateur a arrêté une exécution de cette tâche.
L'arrêt d'une tâche entraîne l'échec de celle-ci, et vous pouvez réessayer.
Échec du test de validation.
Pour un job de validation, un test de validation a échoué. Même si la tâche de validation s'est correctement terminée, l'un de vos tests de validation a échoué. Nous retransmettons cela à 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 relancez. Par exemple, si vous relancez la tâche de validation après un échec de validation, il s'agit de verify
.
RELEASE_NAME
est le nom de la version dont fait partie cette exécution de 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 auquel cette tâche s'exécute.
PHASE_ID
est le nom de la phase à laquelle ce job 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 dans la liste.
La page d'informations du pipeline de livraison affiche une représentation graphique de la progression de votre pipeline de livraison.
Dans l'onglet Déploiements, sous Détails du pipeline de livraison, cliquez sur le nom de votre déploiement.
La page d'informations du déploiement s'affiche.
Sous Phases and Jobs (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'exécution de la tâche est à nouveau exécutée et l'état de la tâche, comme indiqué dans le tableau Phases, est "en cours". Si d'autres tâches se trouvent dans la même phase, elles sont exécutées. Sinon, le déploiement est prêt à passer à la phase suivante.
Étapes suivantes
En savoir plus sur le fonctionnement des stratégies de déploiement dans Cloud Deploy
Consultez la documentation sur 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 dans le reste de Cloud Deploy.