Uma implementação do Cloud Deploy inclui fases. Uma fase é um agrupamento lógico e ordenado de tarefas a realizar numa implementação.
Cada fase inclui tarefas, que são as ações a realizar em cada fase (por exemplo, deploy
ou verify
). Além disso, cada tarefa pode ter zero ou mais execuções de tarefas.
Uma execução de tarefa é uma instância de uma tarefa. Se a tarefa não tiver sido executada, não existem execuções de tarefas.
Este documento descreve as fases, as tarefas e as execuções de tarefas, e como as gerir.
Estrutura de uma implementação
Uma implementação é um recurso do Cloud Deploy que associa uma versão a um alvo.
Fases
Uma implementação consiste numa ou mais fases.
Para uma estratégia de implementação padrão, existe apenas uma fase: stable
.
Para uma estratégia de implementação canary, Existe uma fase separada para cada percentagem configurada. Por exemplo, se configurar um teste canário que implementa 25%, depois 50% e, por fim, 100%, existem três fases:
canary-25
canary-50
stable
Estes nomes de fases são padrão: canary-[PERCENTAGE]
para fases de teste beta e stable
para a fase de 100%. No entanto, se configurar um
canário automatizado personalizado ou um canário personalizado, pode
controlar os nomes das fases.
Tarefas e execuções de tarefas
Cada fase de implementação inclui uma ou mais tarefas.
Para uma implementação numa estratégia de implementação padrão, sem validação de implementação ativada, existe uma fase (stable
).
Para uma implementação canary, existe uma fase para cada parte do canary (por exemplo, canary-25
, canary-50
, stable
) e, para cada fase, existe uma tarefa deploy
. Se a validação estiver ativada, também existe uma tarefa verify
para cada fase.
Uma execução de tarefa é uma instância de uma tarefa. Por exemplo, uma execução de tarefa para uma tarefa deploy
é executada e, se for bem-sucedida, não existe nenhuma execução de tarefa adicional para essa tarefa. Se falhar, pode tentar novamente como outra execução de tarefa.
Ignorar fases pela primeira vez
Algumas estratégias de implementação (por exemplo, canary) distribuem o tráfego entre as versões antiga e nova. Se estiver a implementar num destino pela primeira vez, não existe uma versão antiga, pelo que não podemos repartir o tráfego.
Por este motivo, quando implementa um teste canário pela primeira vez, ignoramos a fase ou as fases do teste canário e executamos a fase stable
. Depois disso, a aplicação é
implementada e as implementações canary futuras incluem as fases canary.
Numa situação do mundo real, normalmente, executa uma implementação canary em que a sua aplicação já está em execução, pelo que a omissão desta fase é rara.
Estados numa implementação
As implementações, as fases, as tarefas e as execuções de tarefas têm estados. Esta secção descreve os estados de cada um.
Estados de implementação
Uma implementação tem um dos seguintes estados:
APPROVAL_REJECTED
A implementação requeria aprovação, mas a aprovação foi rejeitada.
CANCELLED
O estado terminal para implementações que foram canceladas por um utilizador.
CANCELLING
Um utilizador cancelou a implementação, mas o cancelamento ainda não terminou de ser processado.
HALTED
Numa implementação paralela, se uma ou mais implementações parciais falharem, mas pelo menos uma implementação parcial for bem-sucedida, a implementação parcial do controlador é INTERROMPIDA se existirem mais fases após a atual.
Pode retomar uma implementação de controlador interrompida através de qualquer uma das seguintes ações:
Cancele a implementação do comando
Tentar novamente ou ignorar quaisquer tarefas com falhas em implementações secundárias
IN_PROGRESS
Está a ser processada uma execução de tarefa.
FAILED
Uma tarefa falhou e o utilizador não optou por ignorar a falha.
PENDING
A implementação não começou a ser processada. Este estado transita para
IN_PROGRESS
ouCANCELED
.PENDING_APPROVAL
A implementação requer aprovação, mas ainda não foi aprovada.
PENDING_RELEASE
A implementação está a aguardar a renderização do lançamento.
SUCCEEDED
A implementação foi concluída sem falhas.
Estados das fases
Uma fase tem um dos seguintes estados:
PENDING
A fase está a aguardar que outra fase na implementação termine.
IN_PROGRESS
A fase foi iniciada.
SUCCEEDED
A fase foi concluída com êxito.
FAILED
Uma tarefa na fase falhou e o utilizador não optou por ignorar a falha.
ABORTED
Falha numa fase anterior.
SKIPPED
Quando está a executar uma estratégia de implementação, como uma canary, o Cloud Deploy avança para a fase
stable
nos casos em que ainda não existe uma versão em execução da aplicação com a qual dividir o tráfego. Neste caso, o estado é definido comoSKIPPED
.
Estados das tarefas
Uma tarefa tem um dos seguintes estados:
ABORTED
Se uma fase falhar, as fases subsequentes são anuladas.
Se uma tarefa falhar e essa falha não for ignorada, as tarefas subsequentes são anuladas. Por exemplo, se uma fase incluir uma tarefa de implementação e uma tarefa de validação, e a tarefa de implementação falhar, a tarefa de validação é anulada.
DISABLED
Alguns trabalhos numa fase podem estar desativados. Por exemplo, as fases incluem sempre a verificação de tarefas, independentemente de a validação estar ou não ativada. Se a validação não estiver ativada, a tarefa de validação é definida como
DISABLED
.FAILED
A execução de uma tarefa para esta tarefa falhou e o utilizador não optou por ignorar a falha.
O utilizador optou por terminar a execução da tarefa para esta tarefa.
IGNORED
A execução de uma tarefa para esta tarefa falhou e o utilizador optou por ignorar a falha.
IN_PROGRESS
Está atualmente em execução uma execução de tarefa para esta tarefa.
PENDING
A execução da tarefa para esta tarefa está a aguardar o início porque outra fase ou tarefa não terminou.
SKIPPED
Quando está a executar uma estratégia de implementação, como uma canary, o Cloud Deploy avança para a fase
stable
nos casos em que ainda não existe uma versão em execução da aplicação com a qual dividir o tráfego. Neste caso, o estado é definido comoSKIPPED
em trabalhos na fase ou nas fases ignoradas.SUCCEEDED
A execução da tarefa foi concluída com êxito e a tarefa seguinte na fase foi iniciada, ou a fase seguinte foi iniciada ou está pronta para ser iniciada (possivelmente pendente de introdução do utilizador) ou a implementação foi concluída.
Estados de execução de tarefas
FAILED
A execução da tarefa falhou.
IN_PROGRESS
A execução da tarefa começou, mas não terminou.
TERMINATED
O utilizador terminou a execução da tarefa.
TERMINATING
O utilizador terminou a execução da tarefa, mas ainda não terminou a terminação.
SUCCEEDED
Quando uma execução de tarefa termina com êxito, sem falhar nem ser terminada por um utilizador, é colocada num estado
SUCCEEDED
, que
Faça a gestão da implementação
Através da Google Cloud consola ou do SDK Cloud da Google, pode fazer o seguinte com uma implementação do Cloud Deploy:
Se estiver a usar a implementação em paralelo com uma estratégia de implementação canary, veja como gerir implementações canary em paralelo.
Avançar uma implementação
Para alvos configurados para usar uma estratégia de implementação diferente de "padrão", tem de avançar a implementação fase a fase.
Por exemplo, se tiver um alvo configurado para fazer uma implementação canary simples
com apenas 50% e stable
(100%) fases, tem de avançar a implementação
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
Onde:
ROLLOUT_NAME
é o nome da implementação atual
que está a avançar para a fase seguinte.
RELEASE_NAME
é o nome do lançamento do qual esta implementação faz parte.
PIPELINE_NAME
é o nome do pipeline de entrega que está a usar para gerir a implementação deste lançamento.
REGION
é o nome da região em que o lançamento foi criado, por exemplo, us-central1
. Este campo é obrigatório.
Consulte a referência do Google Cloud SDK para mais informações acerca do comando gcloud deploy rollouts advance
.
Consola
Clique no pipeline apresentado na lista de pipelines de fornecimento.
A página de detalhes do pipeline de entrega mostra uma representação gráfica do progresso do pipeline de entrega.
No separador Implementações, em Detalhes do pipeline de fornecimento, clique no nome da implementação.
É apresentada a página de detalhes da implementação para essa implementação.
Repare que, neste exemplo, a implementação tem uma fase
canary-50
e uma fasestable
. A implementação pode ter mais fases ou fases diferentes.Clique em Avançar implementação.
A implementação avança para a fase seguinte.
Cancele uma implementação
Pode cancelar qualquer implementação que não tenha terminado. Também pode cancelar uma implementação com falhas para impedir ações adicionais na mesma (como ignorar ou repetir). A implementação tem de estar num dos seguintes estados:
FAILED
HALTED
IN_PROGRESS
PENDING
PENDING_APPROVAL
PENDING_RELEASE
Depois de cancelar uma implementação, esta fica no estado CANCELLING
até que todas as execuções de tarefas pendentes estejam concluídas. Pode terminar
execuções de tarefas pendentes pelas quais não quer esperar. Depois de a implementação ser
CANCELLED
, já não é possível avançar nem modificá-la.
Para cancelar uma implementação:
gcloud
gcloud deploy rollouts cancel ROLLOUT_NAME \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION
Onde:
ROLLOUT_NAME
é o nome da implementação atual
que está a avançar para a fase seguinte.
RELEASE_NAME
é o nome do lançamento do qual esta implementação faz parte.
PIPELINE_NAME
é o nome do pipeline de entrega que está a usar para gerir a implementação deste lançamento.
REGION
é o nome da região em que o lançamento foi criado, por exemplo, us-central1
. Este campo é obrigatório.
Consulte a referência do Google Cloud SDK para mais informações acerca do comando gcloud deploy rollouts cancel
.
Consola
Clique no pipeline apresentado na lista de pipelines de fornecimento.
A página de detalhes do pipeline de entrega mostra uma representação gráfica do progresso do pipeline de entrega.
No separador Implementações, em Detalhes do pipeline de fornecimento, clique no nome da implementação.
É apresentada a página de detalhes da implementação para essa implementação.
Repare que, neste exemplo, a implementação tem uma fase
canary-50
e uma fasestable
. A implementação pode ter mais fases ou fases diferentes.Clique em Cancelar implementação.
A implementação é cancelada.
Termine uma execução de tarefa
Pode terminar uma execução de tarefa que esteja atualmente em curso. Pode querer fazê-lo, por exemplo, se uma execução de tarefa parecer estar a demorar demasiado tempo ou não estiver a funcionar como esperado. A execução da tarefa tem de estar IN_PROGRESS
para a poder terminar.
gcloud
gcloud deploy job-runs terminate JOB_RUN_ID \
--release=RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--rollout=ROLLOUT_NAME \
--region=REGION
Onde:
JOB_RUN_ID
é o UUID da execução do trabalho que quer terminar. Pode encontrar o ID da execução da tarefa na Google Cloud consola, para o
Cloud Deploy, na página de implementação:
Também pode obter o ID das execuções de tarefas através do comando gcloud deploy rollouts
describe
.
RELEASE_NAME
é o nome do lançamento do qual esta execução da tarefa faz parte.
PIPELINE_NAME
é o nome do pipeline de entrega que está a usar para gerir a implementação deste lançamento.
ROLLOUT_NAME
é o nome da implementação da qual esta execução
do trabalho faz parte.
REGION
é o nome da região em que o lançamento foi criado, por exemplo, us-central1
. Este campo é obrigatório.
Consulte a referência do Google Cloud SDK para mais informações acerca do comando gcloud deploy job-runs terminate
.
Consola
Clique no pipeline apresentado na lista de pipelines de fornecimento.
A página de detalhes do pipeline de fornecimento mostra uma representação gráfica do progresso do pipeline de fornecimento.
No separador Implementações, em Detalhes do pipeline de fornecimento, clique no nome da implementação.
É apresentada a página de detalhes da implementação para essa implementação.
Repare que, neste exemplo, a implementação tem uma fase
canary-50
e uma fasestable
. A implementação pode ter mais fases ou fases diferentes.Em Fases, clique na fase que inclui a tarefa cuja execução quer terminar.
Em Execuções de tarefas, selecione a execução de tarefas específica que está a terminar e, de seguida, clique em Terminar.
A execução da tarefa é terminada e o estado da tarefa, conforme apresentado na tabela Fases, é
Failure
.
Depois de terminar uma execução de tarefa, a tarefa é considerada como tendo falhado e pode fazer qualquer uma das seguintes ações:
- Deixe-o assim e ignore a implementação com falha
- Tente novamente a tarefa
- Ignorar a tarefa e continuar com a tarefa ou a fase seguinte na implementação
Ignore uma tarefa
Pode ignorar uma tarefa com falha e avançar imediatamente para a tarefa seguinte na fase. Essa tarefa pode ter falhado por qualquer motivo, incluindo se tiver terminado a execução de uma tarefa para essa tarefa ou se outra pessoa o tiver feito.
Uma tarefa com falha significa uma fase com falha e uma implementação com falha. No entanto, se ignorar a falha, pode avançar com a fase e a implementação, e, em última análise, podem ter 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
Onde:
ROLLOUT_NAME
é o nome da implementação da qual esta execução
do trabalho faz parte.
RELEASE_NAME
é o nome da versão atual
que inclui esta tarefa.
PIPELINE_NAME
é o nome do pipeline de entrega que está a usar para gerir a implementação deste lançamento.
JOB_ID
é o nome da tarefa a ignorar, por exemplo, DEPLOY
. Pode encontrar o nome da tarefa na tabela Fases da implementação na
consola: Google Cloud
PHASE_ID
é o nome da fase que inclui a tarefa que está a ignorar.
REGION
é o nome da região em que o lançamento foi criado, por exemplo, us-central1
.
Consulte a referência do Google Cloud SDK para mais informações acerca do comando gcloud deploy rollouts ignore-job
.
Consola
Clique no pipeline apresentado na lista de pipelines de fornecimento.
A página de detalhes do pipeline de fornecimento mostra uma representação gráfica do progresso do pipeline de fornecimento.
No separador Implementações, em Detalhes do pipeline de fornecimento, clique no nome da implementação.
É apresentada a página de detalhes da implementação para essa implementação.
Selecione a tarefa com falha a ignorar.
Clique no botão Ignorar falhas.
A execução da tarefa com falha é ignorada e a implementação continua como se a tarefa tivesse sido bem-sucedida. Ou seja, se existirem outros trabalhos na mesma fase, estes são executados. Caso contrário, a implementação está pronta para avançar para a fase seguinte.
Tente novamente uma tarefa com falha
Pode tentar novamente a execução de uma tarefa que falhou. A tarefa pode falhar por qualquer um dos seguintes motivos:
A execução de uma tarefa não foi concluída.
Por exemplo, pode ter ocorrido uma falha de autorizações.
Um utilizador terminou a execução de uma tarefa dessa tarefa.
A terminação de uma execução de tarefa resulta numa tarefa com falha, que pode tentar novamente.
Um teste de validação falhou.
Para uma tarefa de validação, um teste de validação falhou. Embora a tarefa de validação tenha sido concluída corretamente, um dos seus testes de validação falhou e propagamos essa falha de volta para a tarefa de validação. Neste caso, deve tentar novamente a tarefa como parte da depuração do teste com falhas em relação à sua aplicação.
Para repetir uma tarefa 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
Onde:
JOB_NAME
é o nome da tarefa que está a tentar novamente. Por exemplo, se estiver a tentar novamente a tarefa de validação após uma validação
com falha, este seria o valor verify
.
RELEASE_NAME
é o nome do lançamento do qual esta execução da tarefa faz parte.
PIPELINE_NAME
é o nome do pipeline de entrega que está a usar para gerir a implementação deste lançamento.
ROLLOUT_NAME
é o nome da implementação da qual esta execução
do trabalho faz parte.
PHASE_ID
é o nome da fase da qual esta tarefa faz parte. Por exemplo, canary-50
ou stable
.
REGION
é o nome da região em que o lançamento foi criado, por exemplo, us-central1
. Este campo é obrigatório.
Consulte a referência do Google Cloud SDK para mais informações acerca do comando gcloud deploy rollouts retry-job
.
Consola
Clique no pipeline apresentado na lista de pipelines de fornecimento.
A página de detalhes do pipeline de fornecimento mostra uma representação gráfica do progresso do pipeline de fornecimento.
No separador Implementações, em Detalhes do pipeline de fornecimento, clique no nome da implementação.
É apresentada a página de detalhes da implementação para essa implementação.
Em Fases e tarefas, clique na fase que inclui a tarefa que está a tentar novamente.
Selecione a tarefa para tentar novamente.
Clique em Voltar a tentar e confirme.
A execução da tarefa é feita novamente e o estado da tarefa, conforme apresentado na tabela Fases, é "em curso". Se existirem outros trabalhos na mesma fase, estes são executados. Caso contrário, a implementação está pronta para avançar para a fase seguinte.
O que se segue?
Saiba mais sobre como funcionam as estratégias de implementação no Cloud Deploy.
Consulte a documentação sobre a arquitetura do serviço Cloud Deploy para mais informações sobre como as implementações, as fases, as tarefas e as execuções de tarefas se enquadram no resto do Cloud Deploy.