O lançamento do Cloud Deploy inclui fases. Uma fase é um conjunto ordenado e agrupamento de jobs para fazer 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.
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 um release – com uma destino.
Fases
Um lançamento consiste em uma ou mais fases.
Para uma estratégia de implantação padrão, há
tem 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 implante 25%, depois 50% e 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 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 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 de testes.
Uma execução de job é uma instância de um job. Por exemplo, um job executado para um job deploy
é
executada e, se ela for bem-sucedida, não haverá mais 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 tráfego entre as versões antigas e novas. Se você estiver implantando em um destino pela primeira vez, não há uma versão antiga e, por isso, não podemos dividir o tráfego.
Por esse motivo, quando você implanta um canário pela primeira vez, pulamos as fases
do canário e executamos a fase stable
. Depois disso, o aplicativo é
implantadas, e futuras implantações canário incluirão as fases canário.
Em uma situação real, você normalmente executará uma implantação canário em que seu aplicativo já está em execução, então será raro ignorar essa fase.
Estados em um lançamento
Os lançamentos, as fases, os jobs e as execuções de jobs têm estados. Nesta seção, descrevemos estados para cada uma.
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 terminal dos lançamentos que foram cancelados por de um usuário.
CANCELLING
Um usuário cancelou o lançamento, mas o cancelamento ainda não foi concluído processamento.
HALTED
Em uma implantação paralela, se um ou mais filhos dos lançamentos falhar, mas pelo menos um lançamento filho for bem-sucedido, o lançamento do controlador será HALTED se houver mais fases depois da atual.
Para retomar um lançamento de controlador interrompido, siga 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á 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 faz a transição para
IN_PROGRESS
. ouCANCELED
.PENDING_APPROVAL
O lançamento requer aprovação, mas que ainda não foi aprovada.
PENDING_RELEASE
O lançamento está aguardando a renderização da versão.
SUCCEEDED
O lançamento foi concluído, sem falhas.
Estados de fase
Uma fase terá 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 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 é Defina comoSKIPPED
.
Estados do job
Um job 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, as operações jobs são cancelados. Por exemplo, se uma fase incluir um job de implantação e um 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, independentemente de a verificação estar ativada ou não. 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 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
Um job executado para este job está em execução no momento.
PENDING
A execução do job deste job está aguardando para começar, porque outra fase ou job que ela não terminou.
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 com sucesso e o próximo job da fase foi iniciado. ou a próxima fase foi iniciada ou está pronta para começar (possivelmente aguardando 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 ela não foi concluída. terminando.
SUCCEEDED
Quando a execução de um job é concluída com sucesso, sem falhar ou ser encerrada um usuário, ele é colocado em um estado
SUCCEEDED
, que
Gerenciar seu lançamento
Usando o console ou o SDK Google Cloud, é possível fazer a seguir com um lançamento do Cloud Deploy:
Se você estiver usando implantação paralela com uma estratégia de implantação canário, consulte este documento.
Avançar um lançamento
No caso de destinos configurados para usar uma estratégia de implantação diferente da "padrão", você necessário para que o lançamento avance de uma fase para outra.
Por exemplo, se você tiver um destino configurado para executar uma implantação canário simples
com apenas as fases 50% e stable
(100%), você precisaria 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 que este
o 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 o
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 em o nome do lançamento.
A página de detalhes do lançamento é exibida.
Neste exemplo, o lançamento tem uma fase
canary-50
e umastable
. O lançamento pode ter mais fases ou fases diferentes.Clique em Avançar o lançamento.
O lançamento avança para a próxima fase.
Cancelar um lançamento
É possível cancelar qualquer lançamento que ainda não tenha sido concluído. Você também pode cancelar um 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 de cancelar um lançamento, ele ficará no estado CANCELLING
até que todos
execuções de jobs pendentes foram concluídas. Você pode encerrar
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:
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 que este
o 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 o
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 em o nome do lançamento.
A página de detalhes do lançamento é exibida.
Neste exemplo, o lançamento tem uma fase
canary-50
e umastable
. Seu lançamento pode ter mais fases ou diferentes fases.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. Você pode fazer isso,
por exemplo, se uma execução de job parecer estar demorando muito ou não funcionar conforme
esperado. A execução do job precisa ser IN_PROGRESS
para ser encerrada.
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, por
Cloud Deploy, na página de lançamento:
Também é possível receber o ID das execuções de jobs usando o comando gcloud deploy rollouts
describe
.
RELEASE_NAME
é o nome da versão que este
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 deste job.
executar faz parte.
REGION
é o nome da região em que o
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 da o andamento do pipeline de entrega.
Na guia Lançamentos, em Detalhes do pipeline de entrega, clique em o nome do lançamento.
A página de detalhes do lançamento é exibida.
Neste exemplo, o lançamento tem uma fase
canary-50
e umastable
. Seu lançamento pode ter mais fases ou diferentes fases.Em Fases, clique na fase que inclui o job cujo job é executado está encerrando.
Em Execuções do job, selecione a execução do job que você está encerrando e depois Clique em Encerrar.
A execução do job é encerrada e o status dele, conforme mostrado em Fases. da tabela, é
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 a próxima fase da lançamento
Ignorar um job
É possível ignorar um job com falha e passar imediatamente para o próximo job da 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 com falha e um lançamento com falha. No entanto, se você ignorar
depois da falha, tanto a fase quanto o lançamento podem ser progredidos e, em última instância,
têm SUCCEEDED
estados.
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 deste job.
executar faz parte.
RELEASE_NAME
é o nome da versão atual.
que inclui esse trabalho.
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, para
exemplo DEPLOY
. Encontre o nome do job na tabela Fases do
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 o
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 da o andamento do pipeline de entrega.
Na guia Lançamentos, em Detalhes do pipeline de entrega, clique em o nome do lançamento.
A página de detalhes do lançamento é exibida.
Selecione o job com falha a ser ignorado.
Clique no botão Ignorar falhas.
A execução do job com falha é ignorada e o lançamento continua como se o job tivessem sido bem-sucedidos. Ou seja, se houver outros jobs na mesma fase, eles serão executados. Caso contrário, o lançamento está pronto para avançar para o próximo fase de testes.
Tentar novamente um job com falha
Você pode repetir uma execução de job que falhou. O job pode falhar para qualquer um dos seguintes motivos:
Uma execução de job não foi concluída.
Por exemplo, pode ter havido uma falha nas permissões.
Um usuário encerrou uma execução de job daquele 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.
Para um job de verificação, um teste de verificação falhou. Mesmo que o trabalho de verificação tenha sido concluído corretamente, um dos seus de verificação falharam, e eles serão propagados de volta para o job de verificação. 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 repetindo o job de verificação depois que um
verificação, seria verify
.
RELEASE_NAME
é o nome da versão que este
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 deste job.
executar faz parte.
PHASE_ID
é o nome da fase em que este job está
parte. Por exemplo, canary-50
ou stable
.
REGION
é o nome da região em que o
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 da o andamento 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 do lançamento é exibida.
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 de novo e confirme.
A execução do job é executada novamente e o status dele, conforme mostrado Fases, está "em andamento". Se houver outros jobs no mesmo são executados. Caso contrário, o lançamento está pronto para avançar para 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, as fases, os jobs e as execuções de jobs funcionam o restante do Cloud Deploy.