Gerenciar lançamentos

Um lançamento do Cloud Deploy inclui fases. Uma fase é um agrupamento ordenado e lógico de jobs a serem realizados 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 zero ou mais execuções de jobs. Uma execução de job é uma instância de um job. Se o job não foi executado, não há execuções.

Neste documento, descrevemos 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 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 fases canário e stable para a fase 100%. No entanto, se você configurar um canário manual ou personalizado, poderá 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 verificação de implantação ativada, há uma fase (stable).

Para um lançamento canário, haverá uma fase para cada parte dele (por exemplo, canary-25, canary-50 e stable) e, para cada fase, haverá 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 um job deploy é executada e, se for bem-sucedida, não haverá outra execução de job para esse job. Se ele falhar, será possível tentar de novo como outro job.

Pular fases na primeira vez

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

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

Em uma situação real, você geralmente executará uma implantação canário em que o aplicativo já está em execução, então, essa ação de pular a fase será rara.

estados em um lançamento

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 exigiu aprovação, mas ela foi rejeitada.

  • CANCELLED

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

  • CANCELLING

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

  • HALTED

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

    É possível retomar um lançamento de controlador interrompido seguindo um destes procedimentos:

    • Cancelar o lançamento do controlador

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

  • IN_PROGRESS

    Uma execução de job está sendo processada.

  • FAILED

    Um job falhou e o usuário não optou por ignorar a falha.

  • PENDING

    O processamento do lançamento não começou. Esse estado passa 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 versão ser renderizada.

  • SUCCEEDED

    O lançamento foi concluído, sem falhas.

Estados de fase

As fases têm um dos seguintes 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 da fase falhou e o usuário não optou por ignorar a falha.

  • ABORTED

    Falha em uma fase anterior.

  • 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 tem um dos seguintes estados:

  • ABORTED

    Se uma fase falhar, as fases subsequentes serão canceladas.

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

  • DISABLED

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

  • FAILED

    Uma execução de job para este job falhou e o usuário não optou por ignorar a falha.

    O usuário optou por encerrar a execução do job para ele.

  • IGNORED

    Uma execução de job para este job falhou, e o usuário optou por ignorar a falha.

  • IN_PROGRESS

    Há um job em execução para este job.

  • PENDING

    A execução do job deste job está aguardando para começar, 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 nos jobs nas fases ignoradas.

  • SUCCEEDED

    O job foi executado com sucesso e o próximo job da 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 terminou.

  • TERMINATED

    o usuário encerrou a execução do job;

  • TERMINATING

    O usuário encerrou a execução do job, mas ainda não a concluiu.

  • SUCCEEDED

    Quando uma execução de job é concluída, sem falhar ou ser encerrada por um usuário, ele é colocado no estado SUCCEEDED,

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

Por exemplo, se você tiver um destino configurado para executar uma implantação canário simples com apenas as fases de 50% e stable (100%), 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 de que esse lançamento faz parte.

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 seu lançamento.

    A página de detalhes desse lançamento será exibida.

    detalhes do lançamento no console do Google Cloud

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

  4. Clique em Lançamento avançado.

    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 mais 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 de cancelar um lançamento, ele ficará no estado CANCELLING até que todas as execuções de jobs pendentes sejam concluídas. É possível encerrar execuções de jobs pendentes que você não quer esperar. Quando o lançamento for CANCELLED, ele não poderá mais ser avançado ou modificado.

Para cancelar um lançamento, faça o seguinte:

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 de que esse lançamento faz parte.

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 seu lançamento.

    A página de detalhes desse lançamento será exibida.

    detalhes do lançamento no console do Google Cloud

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

  4. Clique em Cancelar lançamento.

    O lançamento foi cancelado.

Encerrar a execução de um job

É possível encerrar uma execução de job que está em andamento. É recomendável fazer isso, por exemplo, se a execução de um job parecer estar demorando muito ou não funcionar conforme o esperado. A execução do job precisa ser IN_PROGRESS para que você possa encerrá-lo.

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 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 de execuções de jobs usando o comando gcloud deploy rollouts describe.

RELEASE_NAME é o nome da versão de que a execução do 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 a execução do 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 seu lançamento.

    A página de detalhes desse lançamento será exibida.

    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 a execução do job que está sendo encerrada.

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

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

Depois que você encerrar a execução de um job, ele será considerado com falha e será possível realizar uma das seguintes ações:

  • Deixe assim e desconsidere a falha no lançamento
  • Repetir o job
  • Ignore o job e continue com o próximo job ou a próxima fase do lançamento.

Ignorar um job

Você pode ignorar um job com falha e ir imediatamente para o próximo job da fase. Esse job pode ter falhado por qualquer motivo, inclusive você ou outra pessoa encerrou a execução dele.

Um job com falha significa uma fase com falha e um lançamento com falha. No entanto, se você ignorar a falha, a fase e 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 a execução do 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 da implementação, no console do Google Cloud:

A 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 seu lançamento.

    A página de detalhes desse lançamento será exibida.

  4. Selecione o job com falha a ser ignorado.

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

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

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

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

  • um usuário encerrou uma execução de job desse job;

    O encerramento de uma execução de job resulta em um job com falha, que você pode tentar novamente.

  • Falha em um teste de verificação.

    Em 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 testes falhou. Nós o propagamos de volta para o job de verificação. 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 repetindo o job de verificação após uma falha de verificação, esse valor será verify.

RELEASE_NAME é o nome da versão de que a execução do 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 a execução do 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 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 seu lançamento.

    A página de detalhes desse lançamento será exibida.

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

  5. Selecione o job para tentar novamente.

  6. Clique em Tentar novamente e confirme.

    detalhes do lançamento no console do Google Cloud

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