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 à versão e ao lançamento para um determinado pipeline de entrega. Essas tarefas incluem a promoção da versão e o avanço da fase.

Saiba mais sobre os recursos usados para a automação de versões no Cloud Deploy.

Saiba mais sobre como configurar as regras que definem o funcionamento dessas automações.

Ações que podem ser automatizadas

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

  • Promover uma versão automaticamente

    É possível configurar o Cloud Deploy para promover sua versão automaticamente, após um lançamento bem-sucedido em 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 atraso.

  • Promover um lançamento em uma programação

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

  • Avançar um lançamento

    É possível configurar o Cloud Deploy para avançar um lançamento de uma fase para a próxima, após um lançamento bem-sucedido no destino anterior. O avanço de fase está disponível apenas em destinos que usam uma estratégia de implantação canary.

  • Reparar um lançamento

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

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

Como a automação funciona?

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

A seguir, apresentamos o processo geral de configuração e execução de uma automaçã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. Você invoca o pipeline de entrega associado a essa automação by criando uma versão.

  4. O lançamento é bem-sucedido para pelo menos um destino ou falha.

    Se o lançamento for bem-sucedido e a automação for promoteReleaseRule:

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

    2. Se houver um tempo de wait configurado, a execução também aguardará esse tempo.

    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 e a automação for advanceRolloutRule e o destino usar uma estratégia de implantação canary:

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

      A propriedade sourcePhase é opcional e, 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, sujeita ao tempo de wait.

    2. Se houver um tempo de wait configurado, a execução também aguardará esse tempo.

      Ao automatizar uma implantação canary, você usa esse tempo de espera para especificar a duração de cada fase canary.

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

    4. Se houver uma fase de origem adicional, 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 será repetido após o tempo configurado wait, se houver.

      Se fases ou jobs específicos forem configurados nessa regra repairRollout, apenas essas fases ou jobs serão repetidos. O padrão, se nenhum job ou fase for especificado, é repetir 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 acontecerá.

    2. Se a primeira nova tentativa falhar, a execução aguardará o tempo wait configurado e tentará novamente.

    3. As novas tentativas são repetidas até que o Cloud Deploy esgote as novas tentativas attempts.

      Se cada tentativa falhar e as attempts forem esgotadas, o lançamento falhará.

      Durante as novas tentativas, o estado de 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 de lançamento.

    4. Se todas as novas tentativas falharem (ou nenhuma for configurada), um novo lançamento será criado para reverter para a versão mais recente bem-sucedida no destino.

Recursos de Automation

Há dois recursos do Cloud Deploy que são especificamente para automação:

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, bem como detalhes sobre como a automação deve 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 mais permissões para realizar a operação automatizada. Consulte Configurar regras de automação para 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 detalhes sobre como configurar o Automation recurso.

Configuração de regras de Automation

Além dessa configuração de automaçã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 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 da plataforma ainda são gerados.

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

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

  3. Os registros da plataforma ainda são gerados quando a automação é instanciada, mesmo que esteja suspensa. É possível usar isso para testar e depurar a automação sem afetar o pipeline de entrega.

A seguir