Automatizar compilações com o Cloud Build

Este tópico descreve como automatizar compilações através do Cloud Build e dos Cloud Source Repositories.

Pode configurar o Cloud Build para compilar automaticamente uma nova imagem sempre que um utilizador enviar uma alteração para ficheiros armazenados nos Cloud Source Repositories. Os eventos que iniciam compilações automáticas são denominados acionadores de compilação. Estes acionadores podem ajudar a garantir que as imagens de contentores são mantidas atualizadas. Também pode usá-los para criar e testar ramificações de funcionalidades.

Os acionadores de compilação podem executar uma compilação com base num Dockerfile ou num ficheiro de configuração de compilação.

Usar um ficheiro Dockerfile

Para usar um Dockerfile para a configuração de compilação, tem de especificar o diretório do Dockerfile e fornecer um nome para a imagem resultante. Para ver detalhes sobre a criação de Dockerfiles, consulte a documentação do Docker.

Depois de fornecer o Dockerfile e o nome da imagem, é apresentada uma pré-visualização do comando docker build que a sua compilação executa e um resumo da configuração do acionador.

Usar um ficheiro de configuração de compilação

Para usar um ficheiro de configuração de compilação para a sua configuração de compilação, tem de indicar a localização de um ficheiro de configuração de compilação.

Depois de definir a localização, é apresentado um resumo do acionador.

Antes de começar

Informações adicionais

  • Os acionadores de compilação usam clones superficiais de um repositório. Com clones superficiais, apenas a confirmação única que acionou uma compilação automática é extraída no espaço de trabalho. Para mais informações e para saber como incluir mais do histórico dos seus repositórios, consulte o artigo Remover a profundidade dos clones.

  • Se usar outro fornecedor de Git alojado, como o GitHub ou o Bitbucket, e ainda precisar de espelhar o repositório nos Cloud Source Repositories, tem de ter a autorização cloudbuilds.builds.create para o Google Cloud projeto com o qual está a trabalhar. Esta autorização é normalmente concedida através da função cloudbuild.builds.editor.

    Quando configura um acionador de compilação com um repositório externo pela primeira vez, tem de configurar a autorização com esse repositório. Para mais informações, consulte Adicionar um repositório como remoto.

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

  • Para ver informações sobre as quotas e os limites do Cloud Build, consulte o artigo Quotas e limites na documentação do Cloud Build.

Crie um acionador de versão

Consola

  1. Abra a página Acionadores na Google Cloud consola.

    Abra a página Acionadores

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

  3. Clique em Abrir.

  4. Clique em Criar acionador.

  5. Introduza as seguintes definições do acionador:

    • Nome: introduza um nome para o acionador.

    • Descrição (opcional): introduza uma descrição para o acionador.

    • Evento: selecione o evento do repositório para invocar o acionador.

      • Enviar para um ramo: defina o acionador para iniciar uma compilação em commits para um ramo específico.

      • Enviar nova etiqueta: defina o acionador para iniciar uma compilação em commits que contenham uma etiqueta específica.

    • Origem: selecione o repositório e o ramo ou a etiqueta correspondente para monitorizar eventos.

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

      • Branch ou Tag: especifique uma expressão regular com o valor da ramificação ou da etiqueta a corresponder. Não é possível usar barras (/) em etiquetas. Para mais informações sobre a sintaxe de expressões regulares aceitável, consulte a sintaxe RE2.
    • Configuração: selecione o ficheiro de configuração de compilação localizado no seu repositório remoto ou crie um ficheiro de configuração de compilação inline para usar na sua compilação.

      • Tipo: selecione o tipo de configuração a usar para a sua compilação.
        • Ficheiro de configuração do Cloud Build (YAML ou JSON): use um ficheiro de configuração de compilação para a sua configuração.
        • Dockerfile: use um Dockerfile para a sua configuração.
        • Buildpacks: use buildpacks para a sua configuração.
      • Localização: especifique a localização da configuração.

        • Repositório: se o ficheiro de configuração estiver localizado no seu repositório remoto, indique a localização do ficheiro de configuração de compilação, do Dockerfilediretório ou do diretório de pacotes de compilação. Se o seu tipo de configuração de compilação for Dockerfile ou um buildpack, tem de fornecer um nome para a imagem resultante e, opcionalmente, um limite de tempo para a compilação. Quando tiver indicado o nome da imagem Dockerfile ou do buildpack, é apresentada uma pré-visualização do comando docker build ou pack que a sua compilação vai executar.
        • Variáveis de ambiente do buildpack (opcional): se selecionou buildpacks como o tipo de configuração, clique em Adicionar variável de ambiente do pacote para especificar as variáveis de ambiente e os valores do buildpack. Para saber mais acerca das variáveis de ambiente do buildpack, consulte o artigo Variáveis de ambiente.
        • Inline: se selecionou Ficheiro de configuração do Cloud Build (YAML ou JSON) como opção de configuração, pode especificar a configuração de compilação inline. Clique em Abrir editor para escrever o ficheiro de configuração de compilação na Google Cloud consola com a sintaxe YAML ou JSON. Clique em Concluído para guardar a configuração de compilação.

    • Conta de serviço: selecione a conta de serviço a usar quando invocar o acionador. Se não selecionar uma conta de serviço, é usada a conta de serviço do Cloud Build predefinida.

  6. Clique em Criar para guardar o acionador de compilação.

gcloud

Execute o seguinte 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

Onde:

  • REPO_NAME é o nome do seu repositório.
  • BRANCH_PATTERN é o nome do ramo no seu repositório para invocar a compilação.
  • TAG_PATTERN é o nome da etiqueta no seu repositório para invocar a compilação.
  • BUILD_CONFIG_FILE é o caminho para o ficheiro de configuração de compilação.
  • SERVICE_ACCOUNT (preview) é o email associado à sua conta de serviço. Se não incluir esta flag, é usada a conta de serviço do Cloud Build predefinida.
  • [Opcional] --require-approval é a flag a incluir para configurar o acionador de modo a exigir aprovação.

Para ver uma lista completa de flags, consulte a referência gcloud sobre como criar acionadores para Cloud Source Repositories.

Depois de executar o comando gcloud para criar um acionador através do Cloud Source Repositories, deve ver um resultado semelhante ao seguinte:

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

Veja acionadores de versão

Para ver os acionadores na Google Cloud consola, abra a página Acionadores do Cloud Build.

Para ver os acionadores de um determinado projeto no Cloud Source Repositories, clique em Definições na parte superior direita e, de seguida, clique em Acionadores do Cloud Build.

Ignore um acionador de compilação

Em alguns casos, pode querer alterar o código-fonte, mas não quer acionar uma compilação, por exemplo, quando atualiza a documentação ou os ficheiros de configuração.

Nesses casos, pode incluir [skip ci] ou [ci skip] na mensagem de confirmação e não é acionada uma compilação.

Por exemplo:

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

Fixed customer affecting issue. [skip ci]

Se quiser executar uma compilação nesse commit mais tarde, use o botão Executar acionador.

Anular a profundidade dos clones

Para compilar a sua origem num repositório Git, o Cloud Source Repositories executa uma clonagem superficial do repositório. Quando o Cloud Source Repositories executa um clone superficial, extrai do espaço de trabalho apenas a confirmação única que acionou a compilação e, em seguida, compila a partir dessa origem. O Cloud Source Repositories não extrai outros ramos nem histórico. Isto é feito para aumentar a eficiência. As compilações não são atrasadas enquanto os repositórios de origem do Google Cloud buscam todo o repositório e histórico apenas para compilar a partir de uma única confirmação.

Para incluir mais do histórico do seu repositório na compilação, adicione um passo de compilação no ficheiro de configuração de compilação para "desfazer" a clonagem. Por exemplo:

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

Para mais informações sobre o git fetch, consulte a referência do Git. Para ver instruções sobre como escrever um ficheiro de configuração de compilação, consulte o artigo Vista geral da configuração de compilação.

O que se segue?