Gerenciar lançamentos

Um lançamento do Cloud Deploy inclui fases. Uma fase é um agrupamento ordenado e lógico 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). E cada job pode ter zero ou mais execuções. Uma execução de job é uma instância de um job. Se o job não tiver sido executado, não haverá execuções.

Este documento descreve fases, jobs e execuções de jobs, além de 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 canary, há uma fase separada para cada porcentagem configurada. Por exemplo, se você configurar um canary que implanta 25%, depois 50% e depois 100%, haverá três fases:

  • canary-25
  • canary-50
  • stable

Estes nomes de fase são padrão: canary-[PERCENTAGE] para etapas de canário e stable para a fase de 100%. No entanto, se você configurar um canário automatizado ou personalizado, poderá controlar os nomes das fases.

Jobs e execuções de jobs

Cada fase de implantação inclui um ou mais jobs.

Em uma estratégia de implantação padrão, sem verificação de implantação ativada, há uma fase (stable).

Em um lançamento canário, há 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 execuções para esse job. Se ele falhar, poderá ser repetido como outra execução de job.

Como pular fases na primeira vez

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

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

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

Estados em um lançamento

Implantações graduais, 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 vai ter um dos seguintes estados:

  • APPROVAL_REJECTED

    O lançamento exigia aprovação, mas ela foi recusada.

  • CANCELLED

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

  • CANCELLING

    Um usuário cancelou o lançamento, mas o cancelamento ainda não terminou de ser processado.

  • HALTED

    Em uma implantação paralela, se um ou mais lançamentos filhos falharem, mas pelo menos um for bem-sucedido, o lançamento do controlador será INTERROMPIDO se houver mais fases após a atual.

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

    • Cancelar o lançamento do controlador

    • Tente de novo ou ignore todos os jobs com falha nos 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 ainda não começou a ser processado. Esse estado faz a transição para IN_PROGRESS ou CANCELED.

  • PENDING_APPROVAL

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

  • PENDING_RELEASE

    O lançamento está aguardando a renderização da versão.

  • SUCCEEDED

    O lançamento foi concluído sem falhas.

Estados da fase

Uma fase pode ter um dos seguintes estados:

  • PENDING

    A fase está aguardando a conclusão de outra fase no 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

    Ao executar uma estratégia de implantação, como uma canário, o Cloud Deploy pula para a fase stable em casos em que ainda não há uma versão em execução do aplicativo com que 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 subsequentes serão interrompidas.

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

  • DISABLED

    Alguns jobs em uma fase podem ser desativados. Por exemplo, as fases sempre incluem jobs de verificação, independente 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 ainda não foi concluído.

  • SKIPPED

    Ao executar uma estratégia de implantação, como uma canário, o Cloud Deploy pula para a fase stable em casos em que ainda não há uma versão em execução do aplicativo com que dividir o tráfego. Nesse caso, o estado é definido como SKIPPED em jobs nas fases ignoradas.

  • SUCCEEDED

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

Estados de execução do job

  • FAILED

    A execução do job falhou.

  • IN_PROGRESS

    A execução do job começou, mas não terminou.

  • TERMINATED

    O usuário encerrou 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 sem falhas ou sem ser encerrada por um usuário, ela é colocada no estado SUCCEEDED, que

Gerenciar o lançamento

Usando o console 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 como gerenciar rollouts canário paralelos.

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 uma implantação canário simples com apenas 50% e stable (100%) fases, 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.

    detalhes do lançamento no console Google Cloud

    Neste exemplo, o lançamento tem uma fase canary-50 e uma fase stable. Sua implantação 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 não tenha sido concluído. Também é possível cancelar um lançamento com falha para evitar outras ações nele, como ignorar ou repetir. O lançamento precisa estar em um dos seguintes estados:

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

Depois de cancelar um lançamento, ele fica no estado CANCELLING até que todas as execuções de job pendentes sejam concluídas. Você pode encerrar execuções de jobs pendentes que não quer esperar. Depois que o lançamento for CANCELLED, não será possível avançar ou modificar.

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.

    Detalhes do lançamento no console Google Cloud

    Neste exemplo, o lançamento tem uma fase canary-50 e uma fase stable. Sua implantação 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 em andamento. Faça isso, por exemplo, se uma execução de job estiver demorando muito ou não estiver funcionando como esperado. A execução do job precisa estar IN_PROGRESS para que você possa encerrá-la.

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 do job que você quer encerrar. É possível encontrar o ID da execução do job no console Google Cloud , para o Cloud Deploy, na página de lançamento:

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

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

RELEASE_NAME é o nome da versão de que esta 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 de que 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 "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.

    detalhes do lançamento no console Google Cloud

    Neste exemplo, o lançamento tem uma fase canary-50 e uma fase stable. Sua implantação pode ter mais fases ou fases diferentes.

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

  5. Em Execuções de jobs, selecione a execução específica que você quer encerrar 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
  • Repetir o job
  • Ignore o job e continue com o próximo job ou fase do lançamento.

Ignorar um job

Você pode ignorar um job com falha e passar imediatamente para o próximo job na fase. O job pode ter falhado por qualquer motivo, inclusive se você ou outra pessoa encerrou uma execução dele.

Um job com falha significa uma fase e um lançamento com falha. No entanto, se você ignorar a falha, tanto a fase quanto o lançamento poderão progredir 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 de que 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. O nome do job está na tabela Fases do rollout, no console do Google Cloud :

A tabela de fases no console 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 "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.

  4. Selecione o job com falha que você quer 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 sido concluído. 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 Google Cloud

Repetir um job com falha

É possível tentar de novo uma execução de job que falhou. O job pode falhar por qualquer um dos seguintes motivos:

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

    Por exemplo, pode ter ocorrido uma falha de permissões.

  • Um usuário encerrou uma execução de job desse 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.

    Para um job de verificação, um teste de verificação falhou. Mesmo que o job de verificação tenha sido concluído corretamente, um dos seus testes falhou, e isso é propagado de volta para o job. Nesse caso, você repetiria 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á tentando novamente. Por exemplo, se você estiver tentando novamente o job de verificação após uma verificação com falha, esse valor será verify.

RELEASE_NAME é o nome da versão de que esta 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 de que esta execução de job faz parte.

PHASE_ID é o nome da fase de que este job faz parte. 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 "Detalhes do pipeline de entrega" mostra uma representação gráfica do progresso do pipeline de entrega.

  3. Na guia Rollouts, em Detalhes do pipeline de entrega, clique no nome do rollout.

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

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

  5. Selecione o job para tentar de novo.

  6. Clique em Tentar novamente e confirme.

    Detalhes do lançamento no console Google Cloud

    A execução do job é feita novamente, e o status, 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