Como automatizar versões com o Cloud Build

Neste tópico, você aprenderá como automatizar versões usando o Cloud Build e o Cloud Source Repositories.

É possível configurar o Cloud Build para criar automaticamente uma nova imagem sempre que um usuário envia uma alteração aos arquivos armazenados no Cloud Source Repositories. Eventos que iniciam versões automáticas são chamados de acionadores de versão. Esses acionadores podem ajudar a garantir que as imagens do contêiner sejam mantidas atualizadas. Também é possível usá-los para criar e testar ramificações de recursos.

Os gatilhos de compilação podem executar um build com base em um Dockerfile ou um arquivo de configuração de versão.

usando um Dockerfile;

Para usar um Dockerfile na sua configuração da versão, especifique o diretório do Dockerfile e forneça um nome para a imagem resultante. Para detalhes sobre como criar Dockerfiles, consulte a documentação do Docker.

Depois de fornecer o Dockerfile e o nome da imagem, você verá uma visualização do comando docker build que sua versão executa e um resumo da configuração do acionador.

Como usar um arquivo de configuração de versão

Informe o local de um arquivo de configuração da versão para usá-lo na sua configuração da versão.

Depois de definir o local, você verá um resumo do acionador.

Antes de começar

Mais informações

  • Os acionadores de versão usam clones superficiais de um repositório. Com clones rasos, somente a confirmação única que acionou uma versão automática é verificada no espaço de trabalho. Para detalhes sobre como incluir mais históricos de repositórios, consulte Como desfazer clones superficiais.

  • Se você usar outro provedor Git hospedado, como no GitHub ou no Bitbucket, e ainda precisar espelhar o repositório no Cloud Source Repositories, precisará ter a permissão cloudbuilds.builds.create do projeto do Google Cloud em que está trabalhando. Essa permissão geralmente é concedida pelo papel cloudbuild.builds.editor.

    Na primeira vez que você configurar um gatilho de compilação com um repositório externo, será preciso definir a autorização do repositório. Para mais informações, consulte Como adicionar um repositório como remoto.

    Depois de configurar seu repositório externo, o Cloud Source Repositories cria um espelho de seu repositório.

  • Para informações sobre cotas e limites do Cloud Build, consulte esta página na documentação do Cloud Build.

Criar um acionador de versão

Console

  1. Abra a página Gatilhos no Console do Google Cloud.

    Abrir a página Acionadores

  2. Selecione o projeto no menu suspenso do seletor de projetos na parte superior da página.

  3. Clique em Abrir.

  4. Clique em Criar gatilho.

  5. Preencha as configurações de gatilho a seguir:

    • Nome: insira um nome para o gatilho.

    • Descrição (opcional): insira uma descrição para o gatilho.

    • Evento: selecione o evento de repositório para invocar seu gatilho.

      • Enviar para uma ramificação: defina o gatilho para iniciar um build em confirmações de uma ramificação específica.

      • Enviar nova tag por push: configure o gatilho para iniciar um build em confirmações que contenham uma tag específica.

    • Origem: selecione o repositório e a ramificação ou tag correspondente para assistir aos eventos.

      Quando sua versão é executada, o conteúdo do repositório é copiado para /workspace, o diretório de trabalho padrão usado pelo Cloud Build. Saiba mais sobre diretórios de trabalho na página de visão geral da configuração da versão.

      • Ramificação ou Tag: especifique uma expressão regular correspondente ao valor da ramificação ou da tag. Não é possível usar barras (/) nas tags. Para mais informações sobre a sintaxe aceitável da expressão regular, consulte Sintaxe de RE2 (em inglês).
    • Configuração: selecione o arquivo de configuração do build localizado no seu repositório remoto ou crie um arquivo de configuração do build inline para usar no build.

      • Tipo: selecione o tipo de configuração a ser usado para seu build.
        • Arquivo de configuração do Cloud Build (yaml ou json): use um arquivo de configuração do build na sua configuração.
        • Dockerfile: use um Dockerfile para sua configuração.
        • Buildpacks: use os buildpacks na sua configuração.
      • Local: especifique o local de configuração.

        • Repositório: se o arquivo de configuração estiver no seu repositório remoto, forneça o local do arquivo de configuração do build, o diretório Dockerfile , ou o diretório buildpacks. Se o tipo de configuração do build for um Dockerfile ou um buildpack, você precisará fornecer um nome para a imagem resultante e, opcionalmente, um tempo limite para o seu build. Depois de fornecer o nome da imagem Dockerfile ou do buildpack, você verá uma visualização do comando docker build ou pack que seu build executará.
        • Variáveis de ambiente de pacote (opcional): se você tiver selecionado buildpacks como tipo de configuração, clique em Adicionar variável de ambiente de pacote para especificar os valores e variáveis de ambiente do buildpack. Para saber mais sobre as variáveis de ambiente de buildpack, consulte Variáveis de ambiente.
        • Inline: se você selecionou o arquivo de configuração do Cloud Build (yaml ou json) como opção de configuração, pode especificar a configuração do build inline. Clique em Abrir editor para gravar seu arquivo de configuração do build no Console do Google Cloud usando a sintaxe YAML ou JSON. Clique em Concluído para salvar a configuração do build.

    • Conta de serviço: selecione a conta de serviço a ser usada ao invocar seu gatilho. Se você não selecionar uma conta de serviço, a conta de serviço padrão do Cloud Build será usada.

  6. Clique em Criar para salvar o gatilho de compilação.

gcloud

Execute este comando:

    gcloud beta builds triggers create cloud-source-repositories \
    --repo=REPO_NAME \
    --branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
    --build-config=BUILD_CONFIG_FILE \
    --service-account=SERVICE_ACCOUNT \
    --require-approval

Em que:

  • REPO_NAME é o nome do repositório;
  • BRANCH_PATTERN é o nome da ramificação no seu repositório para invocar a criação.
  • TAG_PATTERN é o nome da tag no repositório para invocar o build.
  • BUILD_CONFIG_FILE é o caminho para seu arquivo de configuração da compilação.
  • SERVICE_ACCOUNT (visualização) é o e-mail associado à conta de serviço. Se você não incluir essa sinalização, a conta de serviço padrão do Cloud Build será usada.
  • [Opcional] --require-approval é a sinalização a ser incluída para configurar o gatilho para exigir aprovação.

Para uma lista completa de sinalizações, consulte a referência de gcloud sobre como criar gatilhos para o Cloud Source Repositories.

Depois de executar o comando gcloud para criar um gatilho usando o Cloud Source Repositories, você verá uma resposta semelhante à seguinte:

  NAME         CREATE_TIME                STATUS
  trigger-001  2019-10-30T20:45:03+00:00

Ver gatilhos de compilação

Para ver os gatilhos no Console do Google Cloud, abra a página Gatilhos do Cloud Build.

Para ver os gatilhos de um determinado projeto no Cloud Source Repositories, clique em Configurações no canto superior direito e, depois, em Acionadores do Cloud Build.

Ignorar um acionador de versão

Em alguns casos, talvez você queira alterar o código-fonte, mas não queira acionar uma versão (por exemplo, ao atualizar os arquivos de configuração ou documentação).

Nesses casos, inclua [skip ci] ou [ci skip] na mensagem de confirmação, e uma versão não será acionada.

Exemplo:

Author: A User <auser@example.com>
Date:   Tue Apr 3 12:03:35 2018 -0700

Fixed customer affecting issue. [skip ci]

Para executar uma versão desse commit mais tarde, use o botão Executar acionador.

Como desfazer clones superficiais

Para criar sua origem em um repositório Git, o Cloud Source Repositories realiza um clone superficial do repositório. Quando o Cloud Source Repositories executa um clone superficial, ele verifica na área de trabalho apenas a confirmação única que acionou a versão e, em seguida, cria a partir dessa fonte. O Cloud Source Repositories não verifica outras ramificações ou histórico. Isso é feito para aumentar a eficiência. As versões não são atrasadas, enquanto o Cloud Source Repositories busca em todo o repositório e histórico apenas para criar a partir de uma única confirmação.

Para incluir mais histórico do repositório na versão, adicione uma etapa de criação no arquivo de configuração da versão para que o clone seja não superficial. Exemplo:

steps:
- name: gcr.io/cloud-builders/git
  args: ['fetch', '--unshallow']
...

Para mais informações sobre git fetch, consulte a referência de git (em inglês). Para ver instruções sobre como gravar um arquivo de configuração da versão, consulte Visão geral da configuração da versão.

A seguir