Faça a gestão das implementações

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

  • 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 como SKIPPED.

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 como SKIPPED 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

  1. Abra a página Pipelines de fornecimento.

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

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

    detalhes da implementação na consola Google Cloud

    Repare que, neste exemplo, a implementação tem uma fase canary-50 e uma fase stable. A implementação pode ter mais fases ou fases diferentes.

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

  1. Abra a página Pipelines de fornecimento.

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

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

    detalhes da implementação na consola Google Cloud

    Repare que, neste exemplo, a implementação tem uma fase canary-50 e uma fase stable. A implementação pode ter mais fases ou fases diferentes.

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

ID de execução da tarefa nos detalhes da implementação na consola Google Cloud

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

  1. Abra a página Pipelines de fornecimento.

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

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

    detalhes da implementação na consola Google Cloud

    Repare que, neste exemplo, a implementação tem uma fase canary-50 e uma fase stable. A implementação pode ter mais fases ou fases diferentes.

  4. Em Fases, clique na fase que inclui a tarefa cuja execução quer terminar.

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

A tabela de fases, na consola Google Cloud , com uma execução de tarefa com falha

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

  1. Abra a página Pipelines de fornecimento.

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

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

  4. Selecione a tarefa com falha a ignorar.

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

Uma tarefa com falha, pronta para ser ignorada, na consola Google Cloud

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

  1. Abra a página Pipelines de fornecimento.

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

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

  4. Em Fases e tarefas, clique na fase que inclui a tarefa que está a tentar novamente.

  5. Selecione a tarefa para tentar novamente.

  6. Clique em Voltar a tentar e confirme.

    detalhes da implementação na consola Google Cloud

    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?