Como criar e gerenciar acionadores da versão

Um gatilho do Cloud Build inicia automaticamente um build sempre que você faz qualquer alteração no código-fonte. É possível configurar o gatilho para criar o código em qualquer alteração no repositório de origem ou somente alterações que correspondam a determinados critérios.

Nesta página, explicamos como se conectar a repositórios de origem, como o GitHub e o Bitbucket, e criar gatilhos de build para criar o código nos repositórios.

Antes de começar

  • Ative a API Cloud Build.

    Ative a API

Como se conectar a repositórios de origem

Primeiro, é preciso conectar o Cloud Build ao repositório de origem antes de compilar o código nesse repositório. Por padrão, seus repositórios no Cloud Source Repositories estão conectados ao Cloud Build. É possível criar acionadores diretamente para seus repositórios no Cloud Source Repositories sem se conectar manualmente a eles.

Se você estiver conectando um repositório externo, como um hospedado no GitHub ou no Bitbucket, precisará de permissões de nível de administrador no repositório para conectar inicialmente seu repositório ao Cloud Build. As permissões de administrador não são necessárias para criar gatilhos em um repositório já conectado ao Cloud Build.

Conclua as etapas a seguir para se conectar ao GitHub ou ao Bitbucket:

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

    Abrir a página "Gatilhos"

  2. Selecione o projeto e clique em Abrir.

  3. Clique em Conectar repositório.

  4. Selecione o repositório em que você armazenou seu código-fonte.

    Se você selecionar GitHub (espelhado) ou Bitbucket (espelhado) como o repositório de origem, o Cloud Build espelhará esse repositório no Cloud Source Repositories e usará o repositório espelhado em todas as operações.

  5. Clique em Continuar.

  6. Autentique o repositório de origem com seu nome de usuário e senha.

  7. Na lista de repositórios disponíveis, selecione o repositório que você quer e clique em Conectar.

    Para repositórios externos, como o GitHub e o Bitbucket, você precisa ter permissões no nível do proprietário para o projeto do Cloud com que está trabalhando.

  8. Clique em Criar gatilho para continuar criando um gatilho de build para automatizar builds para o código-fonte no repositório ou clique em Concluído.

Como criar um gatilho 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.

      • Solicitação de envio (somente aplicativo do GitHub): configure o gatilho para iniciar um build em confirmações para uma solicitação de envio. Esse recurso só estará disponível se você criar um gatilho do GitHub. Para saber como criar um gatilho do GitHub, consulte Como criar gatilhos do aplicativo do GitHub.

    • 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).
    • Arquivos incluídos (opcional): as alterações que afetam pelo menos um desses arquivos invocarão um build. É possível usar strings de glob para especificar vários arquivos com caracteres curinga. Entre os caracteres curinga aceitáveis estão os caracteres compatíveis com Go Match, ** e alternância.

    • Arquivos ignorados (opcional): as alterações que afetam somente os arquivos ignorados não invocarão um build. É possível usar strings de glob para especificar vários arquivos com caracteres curinga. Entre os caracteres curinga aceitáveis estão os caracteres compatíveis com Go Match, ** e alternância.

      Se você especificar um arquivo em Arquivos incluídos e Arquivos ignorados, as alterações nesse arquivo não invocarão uma build. Digamos que você especifique **/README.md em Arquivos ignorados para ignorar README.md em qualquer diretório e especifique src/* em Arquivos incluídos para iniciar uma versão quando houver alterações em qualquer arquivo na pasta src/. Agora, se você fizer uma alteração em src/README.md, o Cloud Build não iniciará uma build. Cada vez que você envia uma alteração à sua origem, o Cloud Build verifica os arquivos alterados para identificar arquivos incluídos e ignorados a fim de determinar se uma versão precisa ser chamada:

      • Se você enviar uma alteração ao seu repositório em um branch atual, o Cloud Build examinará os arquivos alterados entre a confirmação que você acabou de enviar e a confirmação para que o branch apontou anteriormente.
      • Se você enviar uma alteração para uma ramificação recém-criada, o Cloud Build tratará todos os arquivos no repositório como arquivos alterados.
      • Se você excluir uma ramificação, o Cloud Build não iniciará uma build.
    • Configuração: selecione o arquivo de configuração da versão localizado no seu repositório remoto ou crie um arquivo de configuração de versão in-line para usar na versão.

      • 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 o 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.

    • Usar pool privado: este campo aparecerá se você tiver selecionado Dockerfile como a opção de Configuração. Marque esta caixa de seleção se estiver executando seu build em um pool particular.

    • Pool particular: se você selecionou Usar pool particular, especifique o nome do recurso do pool particular no formato projects/WORKERPOOL_PROJECT_ID/locations/REGION/workerPools/WORKERPOOL_ID.

    • Variáveis de substituição (opcional): se você selecionou o arquivo de configuração do Cloud Build como opção de configuração de build, escolha definir variáveis de substituição específicas do gatilho usando esse campo. Por exemplo, vamos supor que você esteja criando vários gatilhos em que cada um deles implanta seu app em um ambiente específico. É possível especificar que seu app seja implantado em um ambiente em seu arquivo de configuração da compilação e usar esse campo para definir variáveis de substituição especificando em qual ambiente esse gatilho deverá ser implantado. Para informações sobre como especificar valores de substituição em arquivos de configuração da compilação, consulte Como substituir valores de variável.

    • Aprovação (opcional): marque a caixa para exigir a aprovação antes da execução da versão.

    • 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

Para criar um gatilho se seu código-fonte estiver no Cloud Source Repositories:

    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.

  • [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.

Para criar um gatilho se seu código-fonte estiver no GitHub:

    gcloud beta builds triggers create github \
    --repo-name=REPO_NAME \
    --repo-owner=REPO_OWNER \
    --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;
  • REPO_OWNER é o nome de usuário do proprietário do repositório.
  • BRANCH_PATTERN é o nome da ramificação no seu repositório para invocar o build.
  • 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 é 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 GitHub.

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

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

Como testar um gatilho de versão

Para testar manualmente um gatilhos de compilação:

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

    Abrir a página "Gatilhos"

  2. Localize o gatilho na lista e clique em Executar gatilho.

Como ignorar um gatilho de versão

Em alguns casos, convém fazer uma alteração no código-fonte, mas você não quer invocar uma build. Por exemplo, talvez você não queira invocar uma build quando atualizar a documentação ou os arquivos de configuração.

Nessas situações, é possível incluir [skip ci] ou [ci skip] na mensagem de confirmação, e uma build não será invocada.

Se você quiser executar um build nessa confirmação posteriormente, use o botão Executar gatilho na página Gatilhos.

Como incluir o histórico do repositório em uma compilação

Para criar sua fonte em um repositório do Git, o Cloud Build realiza um clone superficial do repositório. Isso significa que apenas a confirmação que iniciou a build foi verificada no espaço de trabalho a ser criado. O Cloud Build não registra nenhuma outra ramificação ou histórico. Isso é feito para aumentar a eficiência. Assim, as versões não precisam esperar para buscar todo o repositório e histórico apenas para criar um único commit.

Se você quiser incluir mais do histórico do seu repositório na versão, adicione uma etapa de versão no seu arquivo de configuração da versão para "desfazer" o clone. Exemplo:

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

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

Como reenviar um build para aprovação

Se a versão for rejeitada, envie a versão para aprovação novamente seguindo estas etapas no Console do Google Cloud:

  1. Abra a página Histórico do Cloud Build no Console do Google Cloud.

    Abrir a página Histórico do Cloud Build

  2. Clique no ID do build que você quer reenviar para aprovação.

  3. Clique em Recriar na parte superior da página para reenviar o build para aprovação.

Sua versão será iniciada quando um usuário com permissões aprová-la. Para saber mais sobre as aprovações do Cloud Build, consulte Como aprovar builds.

Como desativar um gatilho de compilação

Console

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

    Abrir a página “Gatilhos de compilação”

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

  3. Clique em Abrir.

  4. Localize a linha com o gatilho que você quer desativar.

  5. Clique no menu (três pontos verticais) localizado na extremidade direita da linha.

  6. Selecione Disable.

gcloud

Para desativar um gatilho:

  1. Exporte o gatilho que você quer desativar:

     gcloud beta builds triggers export TRIGGER_NAME --destination=EXPORT_PATH
    

    Em que:

    • TRIGGER_NAME é o nome do gatilho.
    • EXPORT_PATH é o caminho de arquivo para onde você quer exportar o gatilho. Por exemplo, é possível especificar o caminho do arquivo como examples/trigger.yaml. O nome do arquivo do gatilho precisa ter a extensão .yaml.
  2. Abra o arquivo que contém o gatilho exportado.

    Seu arquivo será semelhante ao seguinte:

     createTime: '2020-02-21T20:02:50.215599013Z'
     description: Push to any branch
     filename: cloudbuild.yaml
     github:
       name: example-repo-name
       owner: example-owner
       push:
         branch: .*
     id: example-id
     name: Push-to-any-branch
     tags:
     - github-default-push-trigger
    
  3. Adicione o campo disabled ao final do arquivo e defina o valor como True.

     disabled: True
    
  4. Salve o arquivo.

  5. Importe o gatilho:

     gcloud beta builds triggers import --source=IMPORT_PATH
    

    Em que:

    • IMPORT_PATH é o caminho do arquivo do gatilho que você quer importar.

O gatilho de compilação agora está desativado.

Desativar um gatilho não o exclui. Para excluir um gatilho, consulte Como excluir um gatilho de compilação. Um gatilho pode ser reativado alterando o status para Ativado.

Como excluir um gatilho de compilação

Console

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

    Abrir a página “Gatilhos de compilação”

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

  3. Clique em Abrir.

  4. Localize a linha com o gatilho que você quer excluir.

  5. Clique no menu (três pontos verticais) localizado na extremidade direita da linha.

  6. Selecione Excluir.

gcloud

Para excluir um gatilho, execute o seguinte comando:

  gcloud beta builds triggers delete TRIGGER_NAME

Em que:

  • TRIGGER_NAME é o nome do gatilho.

Para uma lista completa de sinalizações, consulte a referência de gcloud sobre como excluir gatilhos.

Implicações de segurança dos gatilhos de compilação

Os gatilho de compilação usam a conta do Cloud Build para executar builds, o que pode fornecer permissões de tempo de compilação aos usuários que usam gatilhos para executar um build. Tenha em mente as seguintes implicações de segurança ao usar gatilho de compilação:

  • Um usuário sem acesso ao projeto do Cloud, mas com acesso de gravação ao repositório associado aos gatilhos de compilação no projeto, terá permissões para alterar o código que está sendo criado.
  • Se você estiver usando os gatilhos de solicitação de pull do GitHub, qualquer usuário com acesso de leitura ao repositório poderá enviar uma solicitação de pull, que pode executar um build que inclua alterações no código na solicitação de envio. Para saber como desativar esse comportamento para gatilhos de solicitação pull do GitHub, consulte Como criar gatilhos do GitHub.

Para saber mais sobre a conta de serviço do Cloud Build e as permissões associadas, consulte Conta de serviço do Cloud Build.

A seguir