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
ouCANCELED
.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 comoSKIPPED
.
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 comoSKIPPED
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
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 para essa implementação.
Observe que, neste exemplo, o lançamento tem uma fase
canary-50
e umastable
. O lançamento 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 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
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 para essa implementação.
Observe que, neste exemplo, o lançamento tem uma fase
canary-50
e umastable
. O lançamento 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 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:
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
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.
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.
Observe que, neste exemplo, o lançamento tem uma fase
canary-50
e umastable
. O lançamento pode ter mais fases ou fases diferentes.Em Fases, clique na fase que inclui o job que você está encerrando.
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:
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 de 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 para essa implementação.
Selecione o job com falha para 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 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.
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
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.
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.
Em Fases e jobs, clique na fase que inclui o job que você está refazendo.
Selecione o job para tentar de novo.
Clique em Tentar de novo e confirme.
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
Saiba como as estratégias de implantação funcionam no Cloud Deploy.
Consulte a documentação da arquitetura de serviço do Cloud Deploy para mais informações sobre como os lançamentos, fases, jobs e execuções de job se encaixam no resto do Cloud Deploy.