Automatizar a sua implementação

Este documento é uma vista geral da automatização da implementação.

Pode configurar o Cloud Deploy para realizar automaticamente tarefas relacionadas com a versão e a implementação para um determinado pipeline de entrega. Estas tarefas incluem a promoção do lançamento e o avanço de fase.

Saiba mais acerca dos recursos usados para a automatização de lançamentos no Cloud Deploy.

Saiba mais sobre como configurar as regras que definem o funcionamento destas automatizações.

Ações que pode automatizar

No Cloud Deploy, pode automatizar as seguintes atividades de lançamento e implementação:

  • Promova uma versão automaticamente

    Pode configurar o Cloud Deploy para promover a sua versão automaticamente, após uma implementação bem-sucedida num destino. Por exemplo, se tiver três alvos, dev, staging e prod, pode configurar uma automatização de forma que o lançamento seja promovido para prod, sem interação humana adicional, após uma implementação bem-sucedida em staging. Também pode especificar um tempo de atraso.

  • Promova um lançamento com base numa programação

    Pode configurar o Cloud Deploy para promover a sua versão de acordo com uma programação cron.

  • Avance uma implementação

    Pode configurar o Cloud Deploy para avançar uma implementação gradual de uma fase para a seguinte, após uma implementação gradual bem-sucedida no destino anterior. O avanço de fase só está disponível em alvos que usam uma estratégia de implementação canária.

  • Repare uma implementação

    Pode configurar o Cloud Deploy para repetir automaticamente uma implementação com falhas. Isto inclui repetir a implementação um número especificado de vezes e reverter automaticamente se esse número de repetições falhar.

Consulte o artigo Regras de automatização para mais informações sobre estas ações e como as configurar.

Como funciona a automatização?

Cada automatização está associada ao pipeline de publicação para o qual é usada. Não pode partilhar uma automatização em vários pipelines de entrega.

Segue-se o processo geral de configuração e execução de uma automatização:

  1. Configura uma automatização

    Esta automatização está associada a um pipeline de entrega.

  2. Regista essa automatização através de gcloud deploy apply.

    Isto cria o recurso de automatização.

  3. Invoca o pipeline de implementação associado a esta automatização criando uma versão.

  4. A implementação é bem-sucedida para, pelo menos, um destino ou falha.

    Se a implementação for bem-sucedida e a automatização for promoteReleaseRule:

    1. A execução aguarda que a implementação seja bem-sucedida no destino de origem. O alvo de origem é o selector.targets configurado para a automatização, não no AutomationRule.

    2. Se existir um tempo wait configurado, a execução também aguarda esse tempo.

    3. O lançamento é automaticamente promovido para o destino seguinte na progressão do pipeline ou para um destino específico, se indicado.

    Se a implementação for bem-sucedida e a automatização estiver advanceRolloutRule ativada, e o destino usar uma estratégia de implementação canary:

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

      A propriedade sourcePhase é opcional e, se não forem especificadas fases de origem, cada fase na implementação é avançada automaticamente. O avanço automático da fase ocorre quando a fase de origem é IN_PROGRESS, sujeito à hora wait.

    2. Se existir um tempo wait configurado, a execução também aguarda esse tempo.

      Quando automatiza uma implementação canary, usa este tempo de espera para especificar a duração de cada fase canary.

    3. A implementação é automaticamente avançada dessa fase de origem para a fase seguinte na implementação.

    4. Se existir uma fase de origem adicional, é tratada da mesma forma, incluindo o mesmo tempo de espera, se aplicável.

    Se a implementação falhar e existir uma automatização com uma regra repairRollout:

    1. A implementação é repetida após o tempo wait configurado, se existir.

      Se forem configuradas fases ou tarefas específicas nesta regra repairRollout, apenas essas fases ou tarefas são repetidas. A predefinição, se não forem especificados trabalhos nem fases, é repetir todas as fases e trabalhos na implementação.

      Como as novas tentativas são opcionais, se a sua automatização não estiver configurada para repetir, este passo não ocorre.

    2. Se a primeira nova tentativa falhar, a execução aguarda o wait tempo configurado e, em seguida, tenta novamente.

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

      Se cada tentativa falhar e os attempts estiverem esgotados, a implementação falha.

      Durante as novas tentativas, o estado de implementação é IN_PROGRESS até a implementação ter êxito ou falhar após a tentativa final. O estado da fase é IN_PROGRESS durante as novas tentativas, mas FAILED após cada falha na implementação.

    4. Se todas as novas tentativas falharem (ou não estiverem configuradas), é criado uma nova implementação para reverter para a versão bem-sucedida mais recente no destino.

Recursos de automatização

Existem dois recursos do Cloud Deploy especificamente para automatização:

  • Automatização

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

    • Um ponteiro para o alvo ou os alvos para os quais a automatização é usada
    • A regra ou as regras que regem o que a automatização faz e como o faz

    A configuração do recurso de automatização é descrita no documento Acerca do recurso de automatização.

    Quando executa gcloud deploy apply num ficheiro 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 alvos a uma ou mais regras de automação.

  • Execução de automatização

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

    A execução da automatização é criada quando uma automatização é acionada.

Saiba mais sobre os recursos de automatização.

Regras de automatização

Uma regra de automatização define uma ação que pode ser realizada automaticamente no seu pipeline de entrega, bem como detalhes sobre como a automatização deve ser realizada.

Saiba mais sobre as regras de automatização.

Funções e autorizações da gestão de identidade e de acesso necessárias

Além das autorizações necessárias para executar qualquer pipeline de entrega do Cloud Deploy e para realizar as tarefas a automatizar (como avançar uma implementação), existem várias autorizaçõ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 destas autorizações, cada regra de automatização pode exigir mais autorizações para realizar a operação automatizada. Consulte o artigo Configure regras de automatização para ver as autorizações específicas necessárias por regra de automatização.

Consulte as funções e autorizações de IAM Para mais informações, incluindo as funções do Cloud Deploy que incluem estas autorizações.

Crie uma automatização

Pode criar uma automatização, incluindo a utilização de qualquer uma das regras de automatização disponíveis, configurando uma automatização e, em seguida, criando o recurso de automatização através de gcloud deploy apply

Consulte a secção seguinte (Configurar automatização) e Configurar regras de automatização.

Configurar a automatização

Consulte o esquema do ficheiro de configuração para ver detalhes sobre como configurar o recurso Automation.

Configuração de regras de automatização

Além desta configuração de automatização, especifica regras de automatização. A configuração é diferente para cada uma das regras disponíveis.

Consulte o artigo Usar regras de automatização para ver descrições de cada uma das regras disponíveis.

Suspenda uma automatização

Pode suspender um recurso existente sem o eliminar. Isto pode ser útil para testar uma automatização sem afetar o pipeline de publicação. Quando suspende uma automatização, esta não é executada, mas os registos da plataforma continuam a ser gerados.

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

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

  3. Os registos da plataforma continuam a ser gerados quando a automatização é instanciada, mesmo que esteja suspensa. Pode usar esta opção para testar e depurar a automatização sem afetar o pipeline de fornecimento.

O que se segue?