Gerenciar lançamentos

O lançamento do Cloud Deploy inclui fases. Uma fase é um agrupamento lógico e ordenado de jobs a serem feitos em um lançamento.

Cada fase inclui jobs, que são as ações a serem realizadas em cada fase (por exemplo, deploy ou verify). Cada job pode ter nenhuma ou mais execuções. Uma execução de job é uma instância de um job. Se o job não foi executado, não há execuções de job.

Este documento descreve as fases, os jobs e as execuções de job e como gerenciá-los.

Estrutura de um lançamento

Um lançamento é um recurso do Cloud Deploy que associa uma versão a um destino.

Fases

Um lançamento consiste em uma ou mais fases.

Para uma estratégia de implantação padrão, há apenas uma fase: stable.

Para uma estratégia de implantação de canário, há uma fase separada para cada porcentagem configurada. Por exemplo, se você configurar um canário que implanta 25%, depois 50% e depois 100%, haverá três fases:

  • canary-25
  • canary-50
  • stable

Esses nomes de fase são padrão: canary-[PERCENTAGE] para estágios canário e stable para a fase de 100%. No entanto, se você configurar um canário manual ou personalizado, será possível controlar os nomes das fases.

Jobs e execuções de jobs

Cada fase de lançamento inclui um ou mais jobs.

Para um lançamento em uma estratégia de implantação padrão, sem a verificação de implantação ativada, há uma fase (stable).

Para um lançamento canário, haverá uma fase para cada parte do canário (por exemplo, canary-25, canary-50, stable), e para cada fase, há um job deploy. Se a verificação estiver ativada, também haverá um job verify para cada fase.

Uma execução de job é uma instância de um job. Por exemplo, uma execução de job para um job deploy é executada e, se for bem-sucedida, não haverá mais nenhuma execução de job para esse job. Se ele falhar, será possível tentar novamente como outra execução de job.

Como pular fases na primeira vez

Algumas estratégias de implantação (por exemplo, canário) distribuem o tráfego entre a versão antiga e a nova. Se você estiver implantando em um destino pela primeira vez, não haverá uma versão antiga, então não será possível distribuir o tráfego.

Por esse motivo, quando você implanta um canário pela primeira vez, pulamos as fases de canário e executamos a fase stable. Depois disso, o aplicativo é implantado, e as implantações futuras de teste canário vão incluir as fases de teste canário.

Em uma situação real, você geralmente executa uma implantação canário em que o aplicativo já está em execução. Portanto, essa fase de salto será rara.

Estados em um lançamento

Os lançamentos, fases, jobs e execuções de jobs têm estados. Esta seção descreve os estados de cada um.

Estados de lançamento

Um lançamento terá um dos seguintes estados:

  • APPROVAL_REJECTED

    O lançamento precisou de aprovação, mas ela foi rejeitada.

  • CANCELLED

    O estado final dos lançamentos que foram cancelados por um usuário.

  • CANCELLING

    Um usuário cancelou o lançamento, mas o cancelamento não foi concluído.

  • HALTED

    Em uma implantação paralela, se um ou mais lançamentos filhos falharem, mas pelo menos um lançamento filho tiver sucesso, o lançamento do controlador será PAUSADO se houver mais fases após a atual.

    Para retomar o lançamento de um controlador interrompido, faça o seguinte:

    • Cancelar o lançamento do controlador

    • Tentar novamente ou ignorar todos os jobs com falha em lançamentos filhos

  • IN_PROGRESS

    Uma execução de job está em processamento.

  • FAILED

    Um job falhou, e o usuário não escolheu ignorar a falha.

  • PENDING

    O lançamento não começou a ser processado. Esse estado transita para IN_PROGRESS ou CANCELED.

  • PENDING_APPROVAL

    O lançamento precisa de aprovação, mas ainda não foi aprovado.

  • PENDING_RELEASE

    O lançamento está aguardando a versão ser renderizada.

  • SUCCEEDED

    O lançamento foi concluído sem falhas.

Estados de fase

Uma fase terá um destes estados:

  • PENDING

    A fase está aguardando a conclusão de outra fase do lançamento.

  • IN_PROGRESS

    A fase começou.

  • SUCCEEDED

    A fase foi concluída.

  • FAILED

    Um job na fase falhou, e o usuário não escolheu ignorar a falha.

  • ABORTED

    Uma fase anterior falhou.

  • SKIPPED

    Quando você executa uma estratégia de implantação, como um canário, o Cloud Deploy pula para a fase stable nos casos em que ainda não há uma versão em execução do aplicativo para dividir o tráfego. Nesse caso, o estado é definido como SKIPPED.

Estados do job

Um job pode ter um dos seguintes estados:

  • ABORTED

    Se uma fase falhar, as fases seguintes serão abortadas.

    Se um job falhar e essa falha não for ignorada, os jobs posteriores serão abortados. Por exemplo, se uma fase incluir um job de implantação e um de verificação e o job de implantação falhar, o job de verificação será abortado.

  • DISABLED

    Alguns jobs em uma fase podem estar desativados. Por exemplo, as fases sempre incluem jobs de verificação, independentemente de a verificação estar ativada ou não. Se a verificação não estiver ativada, o job de verificação será definido como DISABLED.

  • FAILED

    Uma execução de job falhou e o usuário não escolheu ignorar a falha.

    O usuário escolheu encerrar a execução do job.

  • IGNORED

    Uma execução de job falhou e o usuário escolheu ignorar a falha.

  • IN_PROGRESS

    Uma execução de job para esse job está em andamento.

  • PENDING

    A execução do job está aguardando o início porque outra fase ou job não foi concluído.

  • SKIPPED

    Quando você executa uma estratégia de implantação, como um canário, o Cloud Deploy pula para a fase stable nos casos em que ainda não há uma versão em execução do aplicativo para dividir o tráfego. Nesse caso, o estado é definido como SKIPPED em jobs dentro da fase ou das fases ignoradas.

  • SUCCEEDED

    A execução do job foi concluída e o próximo job na fase foi iniciado, a próxima fase foi iniciada ou está pronta para ser iniciada (possivelmente pendente de entrada do usuário) ou o lançamento foi concluído.

Estados de execução do job

  • FAILED

    A execução do job falhou durante a execução.

  • IN_PROGRESS

    A execução do job começou, mas não foi concluída.

  • TERMINATED

    O usuário interrompeu a execução do job.

  • TERMINATING

    O usuário encerrou a execução do job, mas ela ainda não foi concluída.

  • SUCCEEDED

    Quando uma execução de job é concluída com êxito, sem falhar ou ser encerrada por um usuário, ela é colocada no estado SUCCEEDED, que

Gerenciar o lançamento

Com o console do Google Cloud ou o SDK Google Cloud, é possível fazer o seguinte com um lançamento do Cloud Deploy:

Se você estiver usando a implantação paralela com uma estratégia de implantação canário, consulte este documento.

Avançar um lançamento

Para destinos configurados para usar uma estratégia de implantação diferente de "padrão", você precisa avançar o lançamento de fase em fase.

Por exemplo, se você tiver uma meta configurada para realizar um deploy de canário simples com fases de 50% e stable (100%) somente, será necessário avançar o lançamento uma vez, da fase canary-50 para a fase stable (100%).

gcloud

gcloud deploy rollouts advance ROLLOUT_NAME \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --region=REGION

Em que:

ROLLOUT_NAME é o nome do lançamento atual que você está avançando para a próxima fase.

RELEASE_NAME é o nome da versão a que este lançamento pertence.

PIPELINE_NAME é o nome do pipeline de entrega que você está usando para gerenciar a implantação dessa versão.

REGION é o nome da região em que a versão foi criada, por exemplo, us-central1. Obrigatório.

Consulte a referência do SDK Google Cloud para mais informações sobre o comando gcloud deploy rollouts advance.

Console

  1. Abra a página "Pipelines de entrega".

  2. Clique no pipeline mostrado na lista de pipelines de entrega.

    A página "Detalhes do pipeline de entrega" mostra uma representação gráfica do progresso do pipeline de entrega.

  3. Na guia Lançamentos, em Detalhes do pipeline de entrega, clique no nome do lançamento.

    A página de detalhes da implementação é mostrada para essa implementação.

    Detalhes do lançamento no console do Google Cloud

    Observe que, neste exemplo, o lançamento tem uma fase canary-50 e uma stable. O lançamento pode ter mais fases ou fases diferentes.

  4. Clique em Continuar lançamento.

    O lançamento é avançado para a próxima fase.

Cancelar um lançamento

É possível cancelar qualquer lançamento que ainda não tenha sido concluído. Também é possível cancelar um lançamento falho para evitar outras ações nele, como ignorar ou tentar novamente. O lançamento precisa estar em um dos seguintes estados:

  • FAILED
  • HALTED
  • IN_PROGRESS
  • PENDING
  • PENDING_APPROVAL
  • PENDING_RELEASE

Depois que você cancela um lançamento, ele fica em um estado CANCELLING até que todas as execuções de job pendentes sejam concluídas. É possível encerrar execuções de jobs pendentes que você não quer esperar. Depois que o lançamento é CANCELLED, ele não pode ser avançado nem modificado.

Para cancelar um lançamento:

gcloud

gcloud deploy rollouts cancel ROLLOUT_NAME \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --region=REGION

Em que:

ROLLOUT_NAME é o nome do lançamento atual que você está avançando para a próxima fase.

RELEASE_NAME é o nome da versão a que este lançamento pertence.

PIPELINE_NAME é o nome do pipeline de entrega que você está usando para gerenciar a implantação dessa versão.

REGION é o nome da região em que a versão foi criada, por exemplo, us-central1. Obrigatório.

Consulte a referência do SDK Google Cloud para mais informações sobre o comando gcloud deploy rollouts cancel.

Console

  1. Abra a página "Pipelines de entrega".

  2. Clique no pipeline mostrado na lista de pipelines de entrega.

    A página "Detalhes do pipeline de entrega" mostra uma representação gráfica do progresso do pipeline de entrega.

  3. Na guia Lançamentos, em Detalhes do pipeline de entrega, clique no nome do lançamento.

    A página de detalhes da implementação é mostrada para essa implementação.

    Detalhes do lançamento no console do Google Cloud

    Observe que, neste exemplo, o lançamento tem uma fase canary-50 e uma stable. O lançamento pode ter mais fases ou fases diferentes.

  4. Clique em Cancelar lançamento.

    O lançamento é cancelado.

Encerrar a execução de um job

É possível encerrar uma execução de job que está em andamento. Você pode fazer isso, por exemplo, se uma execução de job parecer demorar muito ou não funcionar como esperado. A execução do job precisa estar IN_PROGRESS para que você possa encerrar.

gcloud

gcloud deploy job-runs terminate JOB_RUN_ID \
                               --release=RELEASE_NAME \
                               --delivery-pipeline=PIPELINE_NAME \
                               --rollout=ROLLOUT_NAME \
                               --region=REGION

Em que:

JOB_RUN_ID é o (UUID) da execução de job que você quer encerrar. É possível encontrar o ID de execução do job no console do Google Cloud, para o Cloud Deploy, na página de lançamento:

ID de execução do job nos detalhes do lançamento no console do Google Cloud

Também é possível receber o ID das execuções de job usando o comando gcloud deploy rollouts describe.

RELEASE_NAME é o nome da versão da qual essa execução de job faz parte.

PIPELINE_NAME é o nome do pipeline de entrega que você está usando para gerenciar a implantação dessa versão.

ROLLOUT_NAME é o nome do lançamento do qual esta execução de job faz parte.

REGION é o nome da região em que a versão foi criada, por exemplo, us-central1. Obrigatório.

Consulte a referência do SDK Google Cloud para mais informações sobre o comando gcloud deploy job-runs terminate.

Console

  1. Abra a página "Pipelines de entrega".

  2. Clique no pipeline mostrado na lista de pipelines de entrega.

    A página de detalhes do pipeline de entrega mostra uma representação gráfica do progresso do pipeline de entrega.

  3. Na guia Lançamentos, em Detalhes do pipeline de entrega, clique no nome do lançamento.

    A página de detalhes da implementação é mostrada para essa implementação.

    Detalhes do lançamento no console do Google Cloud

    Observe que, neste exemplo, o lançamento tem uma fase canary-50 e uma stable. O lançamento pode ter mais fases ou fases diferentes.

  4. Em Fases, clique na fase que inclui o job que você está encerrando.

  5. Em Execuções de job, selecione a execução de job específica que você está encerrando e clique em Encerrar.

    A execução do job é encerrada, e o status do job, conforme mostrado na tabela Fases, é Failure.

Depois de encerrar uma execução de job, ele é considerado com falha e você pode fazer o seguinte:

  • Deixe assim e ignore o lançamento com falha
  • Tente novamente
  • Ignorar o job e continuar com o próximo job ou fase no lançamento

Ignorar um job

Você pode ignorar um job com falha e passar imediatamente para o próximo job na fase. Esse job pode ter falhado por qualquer motivo, incluindo você ou outra pessoa interrompeu uma execução de job para ele.

Um job com falha significa uma fase e um lançamento com falha. No entanto, se você ignorar a falha, a fase e o lançamento poderão ser avançados e, por fim, ter estados 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

Em que:

ROLLOUT_NAME é o nome do lançamento do qual esta execução de job faz parte.

RELEASE_NAME é o nome da versão atual que inclui esse job.

PIPELINE_NAME é o nome do pipeline de entrega que você está usando para gerenciar a implantação dessa versão.

JOB_ID é o nome do job a ser ignorado, por exemplo, DEPLOY. Encontre o nome do job na tabela Fases do lançamento no console do Google Cloud:

Tabela de fases no console do Google Cloud com uma execução de job com falha

PHASE_ID é o nome da fase que inclui o job que você está ignorando.

REGION é o nome da região em que a versão foi criada, por exemplo, us-central1.

Consulte a referência do SDK Google Cloud para mais informações sobre o comando gcloud deploy rollouts ignore-job.

Console

  1. Abra a página "Pipelines de entrega".

  2. Clique no pipeline mostrado na lista de pipelines de entrega.

    A página de detalhes do pipeline de entrega mostra uma representação gráfica do progresso do pipeline de entrega.

  3. Na guia Lançamentos, em Detalhes do pipeline de entrega, clique no nome do lançamento.

    A página de detalhes da implementação é mostrada para essa implementação.

  4. Selecione o job com falha para ignorar.

  5. Clique no botão Ignorar falhas.

    A execução do job com falha é ignorada, e o lançamento continua como se o job tivesse sucesso. Ou seja, se houver outros jobs na mesma fase, eles serão executados. Caso contrário, o lançamento estará pronto para avançar para a próxima fase.

Um job com falha, pronto para ser ignorado, no console do Google Cloud

Repetir um job com falha

Você pode tentar executar novamente um job que falhou. O job pode falhar por um dos seguintes motivos:

  • Uma execução de job não foi concluída.

    Por exemplo, pode ter havido uma falha de permissão.

  • Um usuário interrompeu uma execução de job.

    A interrupção de uma execução de job resulta em um job com falha, que pode ser repetido.

  • Um teste de verificação falhou.

    Um teste de verificação falhou em um job de verificação. Embora o job de verificação tenha sido concluído corretamente, um dos testes de verificação falhou, e isso foi propagado de volta para o job. Nesse caso, você tentaria novamente o job como parte da depuração do teste com falha no aplicativo.

Para repetir um job com falha:

gcloud

gcloud deploy rollouts retry-job JOB_NAME \
                       --release=RELEASE_NAME \
                       --delivery-pipeline=PIPELINE_NAME \
                       --rollout=ROLLOUT_NAME \
                       --phase=PHASE_ID \
                       --region=REGION

Em que:

JOB_NAME é o nome do job que você está re tentando. Por exemplo, se você estiver tentando novamente o job de verificação após uma falha na verificação, o valor será verify.

RELEASE_NAME é o nome da versão da qual essa execução de job faz parte.

PIPELINE_NAME é o nome do pipeline de entrega que você está usando para gerenciar a implantação dessa versão.

ROLLOUT_NAME é o nome do lançamento do qual esta execução de job faz parte.

PHASE_ID é o nome da fase em que este job participa. Por exemplo, canary-50 ou stable.

REGION é o nome da região em que a versão foi criada, por exemplo, us-central1. Obrigatório.

Consulte a referência do SDK Google Cloud para mais informações sobre o comando gcloud deploy rollouts retry-job.

Console

  1. Abra a página "Pipelines de entrega".

  2. Clique no pipeline mostrado na lista de pipelines de entrega.

    A página de detalhes do pipeline de entrega mostra uma representação gráfica do progresso do pipeline de entrega.

  3. Na guia Implantações, em Detalhes do pipeline de entrega, clique no nome da implantação.

    A página de detalhes da implementação é mostrada para essa implementação.

  4. Em Fases e jobs, clique na fase que inclui o job que você está refazendo.

  5. Selecione o job para tentar de novo.

  6. Clique em Tentar de novo e confirme.

    Detalhes do lançamento no console do Google Cloud

    A execução do job é executada novamente, e o status do job, conforme mostrado na tabela Fases, é "em andamento". Se houver outros jobs na mesma fase, eles serão executados. Caso contrário, o lançamento estará pronto para avançar para a próxima fase.

A seguir