Gérer les déploiements

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

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

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

  1. Ouvrez la page des pipelines de diffusion.

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

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

    informations sur le 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. 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

  1. Ouvrez la page des pipelines de diffusion.

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

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

    informations sur le 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. 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:

ID d'exécution du job dans les détails du 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 à 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

  1. Ouvrez la page des pipelines de diffusion.

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

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

    informations sur le 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 de phases ou des phases différentes.

  4. Sous Phases, cliquez sur la phase qui inclut la tâche dont vous souhaitez arrêter l'exécution.

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

Table des phases dans la console Google Cloud, avec un échec de l'exécution du job

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

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

  4. Sélectionnez le job en échec à ignorer.

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

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

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

  1. Ouvrez la page des pipelines de diffusion.

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

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

  4. Sous Phases et tâches, cliquez sur la phase qui inclut la tâche que vous essayez à nouveau.

  5. Sélectionnez le job à réessayer.

  6. Cliquez sur Réessayer, puis confirmez l'opération.

    informations sur le déploiement dans la console Google Cloud

    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