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. Seus repositórios no Cloud Source Repositories, por padrão, são conectados ao Cloud Build. Crie gatilhos diretamente para seus repositórios no Cloud Source Repositories sem precisar 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 acionadores em um repositório que já esteja 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 aplicativo do GitHub. Para saber como criar um gatilho do aplicativo 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. Para ver informações sobre a sintaxe aceitável de expressões regulares, 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 da versão in-line para usar na sua versão.

      • Type: selecione o tipo de configuração a ser usado na build.
      • Arquivo de configuração do Cloud Build (yaml ou json): use um arquivo de configuração de versão para sua configuração.
      • Dockerfile: use um Dockerfile para sua configuração.
      • Local: especifique o local da sua configuração.
      • Repositório: se o arquivo de configuração estiver localizado no seu repositório remoto, forneça o local do seuarquivo de configuração de build ou aDockerfile e um nome para a imagem resultante. Se sua configuração for um Dockerfile, será possível fornecer um tempo limite para sua versão. Ao fornecer o Dockerfile e o nome da imagem, você verá uma prévia do comando docker build que sua versão executará.
      • Inline: se você selecionou Arquivo de configuração do Cloud Build (yaml ou json) como opção de configuração, é possível especificar a configuração da versão in-line. Clique em Abrir editor para gravar o arquivo de configuração da criação no Console do Google Cloud usando a sintaxe YAML ou JSON. Clique em Concluído para salvar a configuração da versão.

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

  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 \

Em que:

  • REPO_NAME é o nome do repositório;
  • BRANCH_PATTERN é o nome da ramificação no repositório para invocar a versão.
  • TAG_PATTERN é o nome da tag no repositório para invocar a versão.
  • BUILD_CONFIG_FILE é o caminho para seu arquivo de configuração da versã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 \

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 repositório para invocar a versão.
  • TAG_PATTERN é o nome da tag no repositório para invocar a versão.
  • BUILD_CONFIG_FILE é o caminho para seu arquivo de configuração da versã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 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 de aplicativos 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