Automatizar a implantação

Este documento é uma visão geral da automação de implantação.

É possível configurar o Cloud Deploy para executar automaticamente tarefas relacionadas a lançamentos e lançamentos para um determinado pipeline de entrega. Essas tarefas incluem promoção de lançamento e avanço de fase.

Saiba mais sobre os recursos usados para a automação de lançamentos no Cloud Deploy.

Saiba mais sobre como configurar as regras que definem como essas automatizações funcionam.

Ações que podem ser automatizadas

No Cloud Deploy, é possível automatizar as seguintes atividades de lançamento e implantação:

  • Promover um lançamento automaticamente

    É possível configurar o Cloud Deploy para promover a versão automaticamente após um lançamento bem-sucedido para um destino. Por exemplo, se você tiver três destinos, dev, staging e prod, poderá configurar uma automação para que a versão seja promovida para prod, sem mais interação humana, após uma implantação bem-sucedida em staging. Também é possível especificar um tempo de espera.

  • Promover uma versão em uma programação

    É possível configurar o Cloud Deploy para promover a versão de acordo com uma programação cron.

  • Avançar um lançamento

    É possível configurar o Cloud Deploy para avançar uma distribuição de uma fase para a próxima, depois de uma distribuição bem-sucedida para o destino anterior. O avanço de fase está disponível apenas em destinos que usam uma estratégia de implantação canário.

  • Reparar um lançamento

    É possível configurar o Cloud Deploy para tentar novamente automaticamente uma implantação com falha. Isso inclui tentar o lançamento um número especificado de vezes e reverter automaticamente se esse número de tentativas falhar.

Consulte Regras de automação para mais informações sobre essas ações e como configurá-las.

Como funciona a automação?

Cada automação está vinculada ao pipeline de entrega em que é usada. Não é possível compartilhar uma automação entre vários pipelines de entrega.

Confira a seguir o processo geral de configuração e execução de uma automatização:

  1. Você configura uma automação.

    Essa automação está associada a um pipeline de entrega.

  2. Você registra essa automação usando gcloud deploy apply.

    Isso cria o recurso de automação.

  3. Invoque o pipeline de entrega associado a essa automação criando uma versão.

  4. O lançamento é concluído com sucesso para pelo menos um destino ou falha.

    Se o lançamento for concluído e a automação for promoteReleaseRule:

    1. A execução aguarda o lançamento no destino de origem. O destino de origem é o selector.targets configurado para a automação, não no AutomationRule.

    2. Se houver um horário wait configurado, a execução também vai esperar por esse horário.

    3. A versão é promovida automaticamente para o próximo destino na progressão do pipeline ou para um destino específico, se indicado.

    Se o lançamento for bem-sucedido, a automação for advanceRolloutRule e o destino usar uma estratégia de lançamento canário:

    1. A execução aguarda a fase de origem identificada, se houver uma.

      A propriedade sourcePhase é opcional. Se nenhuma fase de origem for especificada, cada fase do lançamento será avançada automaticamente. O avanço automático da fase acontece quando a fase de origem é IN_PROGRESS, sujeito ao tempo wait.

    2. Se houver um horário wait configurado, a execução também vai esperar por esse horário.

      Ao automatizar uma implantação de canário, use esse tempo de espera para especificar a duração de cada fase.

    3. O lançamento é avançado automaticamente dessa fase de origem para a próxima fase no lançamento.

    4. Se houver outra fase de origem, ela será tratada da mesma forma, incluindo o mesmo tempo de espera, se aplicável.

    Se o lançamento falhar e houver uma automação com uma regra repairRollout:

    1. O lançamento é tentado novamente após o tempo wait configurado, se houver.

      Se fases ou jobs específicos forem configurados nesta regra repairRollout, somente essas fases ou jobs serão tentadas novamente. O padrão, se nenhum job ou fase for especificado, é tentar novamente todas as fases e jobs no lançamento.

      Como as novas tentativas são opcionais, se a automação não estiver configurada para repetir, essa etapa não vai acontecer.

    2. Se a primeira tentativa falhar, a execução vai esperar o tempo wait configurado e tentar de novo.

    3. As tentativas são repetidas até que o Cloud Deploy esgote a tentativa attempts.

      Se cada tentativa falhar e o attempts for esgotado, o lançamento vai falhar.

      Durante as novas tentativas, o estado do lançamento é IN_PROGRESS até que o lançamento seja bem-sucedido ou falhe após a tentativa final. O estado da fase é IN_PROGRESS durante as novas tentativas, mas FAILED após cada falha no lançamento.

    4. Se todas as tentativas falharem (ou nenhuma estiver configurada), um novo lançamento será criado para reverter para a versão mais recente com sucesso no destino.

Recursos de Automation

Há dois recursos do Cloud Deploy específicos para automação:

  • Automação

    Um Automation é um recurso filho de um pipeline de entrega e inclui as seguintes informações:

    • Um ponteiro para o(s) alvo(s) em que a automação é usada
    • As regras que governam o que a automação faz e como ela faz isso

    A configuração do recurso de Automation é descrita no documento Sobre o recurso de automação.

    Quando você executa gcloud deploy apply em um arquivo que inclui uma configuração de automação (kind: Automation), o Cloud Deploy cria um recurso de automação, que associa um pipeline de entrega e um ou mais destinos a uma ou mais regras de automação.

  • Execução da automação

    O AutomationRun é uma instância de uma automação. É um ponteiro para o recurso de Automation correspondente, além de informações sobre o lançamento que o gerou e outros metadados.

    A execução de automação é criada quando uma automação é acionada.

Saiba mais sobre os recursos de automação.

Regras Automation

Uma regra de automação define uma ação que pode ser realizada no pipeline de entrega automaticamente, além de detalhes sobre como a automação será realizada.

Saiba mais sobre as regras de automação.

Papéis e permissões do Identity and Access Management necessários

Além das permissões necessárias para executar qualquer pipeline de entrega do Cloud Deploy e realizar as tarefas a serem automatizadas (como avançar um lançamento), há várias permissões necessárias para realizar determinadas operações nos recursos Automation e AutomationRun:

  • clouddeploy.automations.create
  • clouddeploy.automations.delete
  • clouddeploy.automations.get
  • clouddeploy.automations.list
  • clouddeploy.automations.update
  • clouddeploy.automationRuns.cancel
  • clouddeploy.automationRuns.get
  • clouddeploy.automationRuns.list

Além dessas permissões, cada regra de automação pode exigir outras permissões para realizar a operação automatizada. Consulte Configurar regras de automação para conferir as permissões específicas necessárias por regra de automação.

Consulte Papéis e permissões do IAM para mais informações, incluindo quais papéis do Cloud Deploy incluem essas permissões.

Criar uma automação

É possível criar uma automação, incluindo o uso de qualquer uma das regras de automação disponíveis, configurando uma automação e criando o recurso de automação usando gcloud deploy apply.

Consulte a seção a seguir (Como configurar a automação) e Como configurar regras de automação.

Como configurar a automação

Consulte o Esquema do arquivo de configuração para saber como configurar o recurso Automation.

Configuração da regra Automation

Além dessa configuração, você especifica regras de automação. A configuração é diferente para cada uma das regras disponíveis.

Consulte Como usar regras de automação para ver descrições de cada uma das regras disponíveis.

Suspender uma automação

É possível suspender um recurso sem excluí-lo. Isso pode ser útil para testar uma automação sem afetar o pipeline de entrega. Quando você suspende uma automação, ela não é executada, mas os registros do sistema ainda são gerados.

  1. Na configuração Automation, atualize a propriedade suspended para true.

  2. Execute gcloud deploy apply com esse arquivo de configuração.

  3. Os registros da plataforma ainda são gerados quando a automação é instanciada, mesmo que seja suspensa. Você pode usar isso para testar e depurar a automação sem afetar o pipeline de entrega.

A seguir