Gérer les déploiements

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 ou CANCELED.

  • 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 sur SKIPPED.

É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 sur SKIPPED 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

  1. Ouvrez la page des pipelines de diffusion.

  2. 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.

  3. 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.

    Détails du déploiement dans la console Google Cloud

    Notez que, dans cet exemple, le déploiement comporte une phase canary-50 et une phase stable. Votre déploiement peut comporter plus ou moins de phases.

  4. 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

  1. Ouvrez la page des pipelines de diffusion.

  2. 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.

  3. 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.

    Détails du déploiement dans la console Google Cloud

    Notez que, dans cet exemple, le déploiement comporte une phase canary-50 et une phase stable. Votre déploiement peut comporter plus ou moins de phases.

  4. 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:

ID d'exécution de tâche dans les détails de déploiement dans la console Google Cloud

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

  1. Ouvrez la page des pipelines de diffusion.

  2. 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.

  3. 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.

    Détails du déploiement dans la console Google Cloud

    Notez que, dans cet exemple, le déploiement comporte une phase canary-50 et une phase stable. Votre déploiement peut comporter plusieurs phases ou différentes phases.

  4. Sous Phases, cliquez sur la phase incluant la tâche dont vous arrêtez le job.

  5. 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:

Table des phases, dans la console Google Cloud, avec une tâche ayant échoué

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

  1. Ouvrez la page des pipelines de diffusion.

  2. 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.

  3. 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.

  4. Sélectionnez la tâche ayant échoué.

  5. 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.

Une tâche ayant échoué, prête à être ignorée, dans la console Google Cloud

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

  1. Ouvrez la page des pipelines de diffusion.

  2. 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.

  3. 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.

  4. Sous Phases and Jobs (Phases et tâches), cliquez sur la phase qui inclut la tâche que vous réessayez.

  5. Sélectionnez la tâche à réessayer.

  6. Cliquez sur Réessayer, puis confirmez.

    Détails du déploiement dans la console Google Cloud

    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