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
-
Enable the Cloud Build API.
- É necessário ter a função de Editor do Cloud Build (
roles/cloudbuild.builds.editor
) no projeto para criar acionadores. - Você precisa do código-fonte no Cloud Source Repositories, no GitHub ou no Bitbucket.
- Você precisa de um
Dockerfile
ou um arquivo de configuração do Cloud Build.
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:
Abra a página Gatilhos no console do Google Cloud.
Selecione o projeto e clique em Abrir.
Selecione a região em que você quer criar o acionador no menu suspenso Região.
Clique em Conectar repositório.
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.
Clique em Continuar.
Autentique o repositório de origem com seu nome de usuário e senha.
Na lista de repositórios disponíveis, selecione o repositório que você quer e clique em Conectar.
Para repositórios externos, como GitHub e Bitbucket, você precisa ter permissões de proprietário para o projeto do Google Cloud que você funcionando.
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
Abra a página Gatilhos no console do Google Cloud.
Selecione o projeto no menu suspenso do seletor de projetos na parte superior da página.
Clique em Abrir.
Clique em Criar gatilho.
Preencha as configurações de gatilho a seguir:
Nome: insira um nome para o gatilho.
Região: selecione a região do acionador.
Se o arquivo de configuração do build associado ao gatilho especificar um pool particular, a região selecionada para o gatilho precisa corresponder à região do pool particular.
Se você selecionar
global
como sua região, o Cloud Build usará a região especificada no arquivo de configuração do build para executar o build. Pode ser a região do pool privado, se você especificar um pool privado no arquivo de configuração do build, ou no pool padrão global, se você não especificar um pool particular.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: defina seu gatilho para iniciar uma compilação. em commits para uma solicitação de envio.
Origem: selecione 1ª geração ou 2ª geração como sua origem. Só é possível conectar repositórios do GitHub e do GitHub Enterprise quando selecionando 2a geração como origem. Para saber mais, consulte Repositórios do Cloud Build.
- 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. 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).Quando o build é executado, o Cloud Build copia conteúdo do repositório para
/workspace
, que é o padrão de trabalho do Cloud Build. Saiba mais sobre diretórios de trabalho na página de visão geral da configuração da versão.Para permitir apenas builds de origens específicas, defina uma política da organização para as integrações permitidas (
constraints/cloudbuild.allowedIntegrations
) para negar a interação. com a origem definida no acionador. A organização modifica o gatilho, e o build não é executado. Para saber mais, consulte Como as políticas da organização afetam os builds de versão de acesso controlado no seu projeto.
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 ignorarREADME.md
em qualquer diretório e especifiquesrc/*
em Arquivos incluídos para iniciar uma versão quando houver alterações em qualquer arquivo na pastasrc/
. Agora, se você fizer uma alteração emsrc/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 o repositório for o Cloud Source Repositories e você enviar uma alteração para uma ramificação recém-criada, depois o Cloud Build trata 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 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 localizado no
repositório remoto, forneça a localização do
arquivo de configuração de build, o
Dockerfile
diretório de build ou o diretório buildpacks. Se o tipo de configuração do build for umDockerfile
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 imagemDockerfile
ou do buildpack, você verá uma visualização do comandodocker build
oupack
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 de build no Console do Google Cloud usando sintaxe YAML ou JSON. Clique em Concluído para salvar a configuração do build.
- Repositório: se o arquivo de configuração estiver localizado no
repositório remoto, forneça a localização do
arquivo de configuração de build, o
- Tipo: selecione o tipo de configuração a ser usado para seu 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, o Conta de serviço legada do Cloud Build é usado se estiver disponível para o projeto.
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 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
é o e-mail associado à conta de serviço. Se você não incluir essa sinalização, o Conta de serviço legada do Cloud Build é usado se estiver disponível para o projeto.
- [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 builds triggers create github \
--region=REGION \
--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
--include-logs-with-status
Em que:
- REGION é a região do acionador.
- 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 flag, a conta de serviço legada do Cloud Build será usada se estiver disponível para o projeto.- [Opcional]
--require-approval
é a sinalização a ser incluída para configurar o gatilho para exigir aprovação. - [Opcional]
--include-logs-with-status
é uma flag que pode ser especificada para mostrar logs de build dos repositórios. Essa flag é compatível com builds de repositórios do GitHub e do GitHub Enterprise.
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:
Abra a página Gatilhos no console do Google Cloud.
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:
Abra a página Histórico do Cloud Build no console do Google Cloud.
Clique no ID do build que você quer reenviar para aprovação.
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 Bloquear builds na aprovação.
Como atualizar um gatilho de compilação
Console
Abra a página Gatilhos no console do Google Cloud.
Selecione o projeto no menu suspenso do seletor de projetos na parte superior da página.
Clique em Abrir.
Localize a linha com o gatilho que você quer atualizar.
Clique no menu (três pontos verticais) localizado na extremidade direita da linha.
Selecione Editar.
gcloud
Para atualizar um gatilho:
Exporte o gatilho que você quer atualizar:
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 comoexamples/trigger.yaml
. O nome do arquivo do gatilho precisa ter a extensão.yaml
.
Abra o arquivo que contém o gatilho exportado.
Seu arquivo será semelhante ao seguinte:
createTime: '2022-05-26T21:56:11.830784153Z' filename: cloudbuild.yaml github: name: cloud-build-example owner: main push: branch: master id: 86201062-3b14-4b6a-a2fb-4ee924e8b1dd # remove field name and value to not show build logs includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS name: trigger-001
Edite o arquivo manualmente para atualizar o acionador.
Para ver os campos que você pode adicionar ou remover do acionador, consulte o acionador recurso.
Salve o arquivo.
Importe o gatilho:
gcloud builds triggers import --source=IMPORT_PATH
Em que:
IMPORT_PATH
é o caminho do arquivo do gatilho que você quer importar.
O gatilho de build foi atualizado.
Como desativar um gatilho de compilação
Console
Abra a página Gatilhos no console do Google Cloud.
Selecione o projeto no menu suspenso do seletor de projetos na parte superior da página.
Clique em Abrir.
Localize a linha com o gatilho que você quer desativar.
Clique no menu (três pontos verticais) localizado na extremidade direita da linha.
Selecione Disable.
gcloud
Para desativar um gatilho:
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 comoexamples/trigger.yaml
. O nome do arquivo do gatilho precisa ter a extensão.yaml
.
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
Adicione o campo
disabled
ao final do arquivo e defina o valor comoTrue
.disabled: True
Salve o arquivo.
Importe o gatilho:
gcloud 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
Abra a página Gatilhos no console do Google Cloud.
Selecione o projeto no menu suspenso do seletor de projetos na parte superior da página.
Clique em Abrir.
Localize a linha com o gatilho que você quer excluir.
Clique no menu (três pontos verticais) localizado na extremidade direita da linha.
Selecione Excluir.
gcloud
Para excluir um gatilho, execute o seguinte comando:
gcloud 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
A conta de serviço configurada para um acionador de build pode fornecer permissões elevadas de tempo de build aos usuários que usam gatilhos para invocar um build. Isso se aplica à conta de serviço padrão do Cloud Build e às contas de serviço especificadas pelo usuário. Tenha em mente as seguintes implicações de segurança ao usar gatilhos de build:
- 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.
É uma boa prática de segurança criar uma conta de serviço apenas com o no gatilho. Para saber mais, consulte Configurar contas de serviço especificadas pelo usuário. Para saber mais sobre a conta de serviço legada do Cloud Build e as permissões associadas, consulte Conta de serviço do Cloud Build.
A seguir
- Saiba como iniciar builds manualmente ou configure implantações que exigem invocação manual criando código manualmente em repositórios de origem.
- Saiba como criar gatilhos do GitHub.
- Saiba como automatizar builds em resposta a eventos do Pub/Sub.
- Saiba como automatizar builds em resposta a eventos de webhook.
- Saiba como ver os resultados de build para gatilhos de build.
- Saiba como realizar implantações azul-verde no Compute Engine.
- Saiba como resolver erros de build.