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

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 estão conectados ao Cloud Build por padrão. É possível criar gatilhos diretamente para seus repositórios no Cloud Source Repositories sem precisar se conectar manualmente a eles. Siga estas etapas para se conectar ao GitHub e 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 repositório.

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

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

      • Repositório: na lista de repositórios disponíveis, selecione o repositório que você quer. Para conectar um novo repositório, consulte Como se conectar a repositórios de origem.

      • 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 da compilação: selecione o arquivo de configuração da compilação (localizado no repositório remoto) para usar na sua build.

      • Para usar um Dockerfile para sua configuração de build, você precisará especificar o diretório Dockerfile e um nome para a imagem resultante. Também é possível fornecer um tempo limite para sua build. Depois de fornecer o Dockerfile e o nome da imagem, você verá uma visualização do comando docker build que sua o build executará.

      • Para usar um arquivo de configuração da compilação para sua configuração, você precisará fornecer o local do arquivo de configuração da compilaçã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=".*" \
    --build-config=[BUILD_CONFIG_FILE] \

Em que:

  • --repo é o nome do repositório;
  • --branch-pattern é o tipo de gatilho especificado como uma string. No exemplo acima, especificamos ".*",, que indica que uma compilação será acionada quando as alterações forem enviadas a qualquer ramificação no repositório. Também é possível usar --tag-pattern para indicar que as compilações só serão acionadas quando enviados para tags específicas;
  • --build-config é o caminho para seu arquivo de configuração da compilaçã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=".*" \
    --build-config=[BUILD_CONFIG_FILE] \

Em que:

  • --repo-name é o nome do repositório;
  • --repo-owner é o nome do proprietário do repositório;
  • --branch-pattern é o tipo de gatilho especificado como uma string. No exemplo acima, especificamos ".*",, que indica que uma compilação será acionada quando as alterações forem enviadas a qualquer ramificação no repositório. Também é possível usar --tag-pattern para indicar que as compilações serão acionadas somente quando enviadas a tags específicas ou --pull-request-pattern para indicar a ramificação do Git base para corresponder a todos os eventos de solicitação de envio.
  • --build-config é o caminho para seu arquivo de configuração da compilaçã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 acionador 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 acionador 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. Por exemplo:

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

Para mais informações sobre git fetch, consulte a referência de git. 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.

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 [NAME] --destination=[PATH]
    

    Em que:

    • [NAME] é o nome do gatilho.
    • [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=[PATH]
    

    Em que:

    • [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 [NAME]

Em que:

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