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
ouCANCELED
.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 comoSKIPPED
.
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 comoSKIPPED
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
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-50
e 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:
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
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-50
e 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-50
e 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.