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-25canary-50stable
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_REJECTEDO lançamento exigia aprovação, mas ela foi recusada.
CANCELLEDO estado final para lançamentos que foram cancelados por um usuário.
CANCELLINGUm usuário cancelou o lançamento, mas o cancelamento ainda não terminou de ser processado.
HALTEDEm 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_PROGRESSUma execução de job está em processamento.
FAILEDUm job falhou, e o usuário não escolheu ignorar a falha.
PENDINGO lançamento ainda não começou a ser processado. Esse estado faz a transição para
IN_PROGRESSouCANCELED.PENDING_APPROVALO lançamento requer aprovação, mas ainda não foi aprovado.
PENDING_RELEASEO lançamento está aguardando a renderização da versão.
SUCCEEDEDO lançamento foi concluído sem falhas.
Estados da fase
Uma fase pode ter um dos seguintes estados:
PENDINGA fase está aguardando a conclusão de outra fase no lançamento.
IN_PROGRESSA fase começou.
SUCCEEDEDA fase foi concluída.
FAILEDUm job na fase falhou, e o usuário não escolheu ignorar a falha.
ABORTEDUma fase anterior falhou.
SKIPPEDAo executar uma estratégia de implantação, como uma canário, o Cloud Deploy pula para a fase
stableem 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 comoSKIPPED.
Estados do job
Um job pode ter um dos seguintes estados:
ABORTEDSe 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.
DISABLEDAlguns 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.FAILEDUma 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.
IGNOREDUma execução de job falhou, e o usuário escolheu ignorar a falha.
IN_PROGRESSUma execução de job para esse job está em andamento.
PENDINGA execução do job está aguardando o início porque outra fase ou job ainda não foi concluído.
SKIPPEDAo executar uma estratégia de implantação, como uma canário, o Cloud Deploy pula para a fase
stableem 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 comoSKIPPEDem jobs nas fases ignoradas.SUCCEEDEDA 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
FAILEDA execução do job falhou.
IN_PROGRESSA execução do job começou, mas não terminou.
TERMINATEDO usuário encerrou a execução do job.
TERMINATINGO usuário encerrou a execução do job, mas ela ainda não foi concluída.
SUCCEEDEDQuando 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
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.
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.

Neste exemplo, o lançamento tem uma fase
canary-50e uma fasestable. Sua implantação pode ter mais fases ou fases diferentes.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:
FAILEDHALTEDIN_PROGRESSPENDINGPENDING_APPROVALPENDING_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
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.
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.

Neste exemplo, o lançamento tem uma fase
canary-50e uma fasestable. Sua implantação pode ter mais fases ou fases diferentes.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:

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

Neste exemplo, o lançamento tem uma fase
canary-50e uma fasestable. Sua implantação pode ter mais fases ou fases diferentes.Em Fases, clique na fase que inclui o job cuja execução você está encerrando.
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 :

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
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.
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.
Selecione o job com falha que você quer ignorar.
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.

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
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.
Na guia Rollouts, em Detalhes do pipeline de entrega, clique no nome do rollout.
A página de detalhes da implementação é mostrada.
Em Fases e jobs, clique na fase que inclui o job que você está tentando novamente.
Selecione o job para tentar de novo.
Clique em Tentar novamente e confirme.

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
Saiba mais sobre como as estratégias de implantação funcionam no Cloud Deploy.
Consulte a documentação Arquitetura de serviço do Cloud Deploy para mais informações sobre como os rollouts, as fases, os jobs e as execuções de jobs se encaixam no restante do Cloud Deploy.