Um trigger do Cloud Build inicia automaticamente uma compilação sempre que faz alterações ao seu código-fonte. Pode configurar o acionador para criar o seu código em quaisquer alterações ao repositório de origem ou apenas em alterações que correspondam a determinados critérios.
Esta página explica como estabelecer ligação a repositórios de origem, como o GitHub e o Bitbucket, e criar acionadores de compilação para compilar o código nos repositórios.
Antes de começar
Para receber as autorizações de que
precisa para criar e gerir acionadores de compilação,
peça ao seu administrador para lhe conceder a função de IAM de
editor do Cloud Build (roles/cloudbuild.builds.editor
)
no seu projeto.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Além disso, faça o seguinte:
-
Enable the Cloud Build API.
- Certifique-se de que tem código fonte nos Cloud Source Repositories, no GitHub ou no Bitbucket.
- Certifique-se de que tem um
Dockerfile
ou um ficheiro de configuração do Cloud Build.
Associe repositórios de origem
Primeiro, tem de associar o Cloud Build ao seu repositório de origem antes de criar o código nesse repositório. Os seus repositórios nos Cloud Source Repositories estão ligados ao Cloud Build por predefinição. Pode criar diretamente acionadores para os seus repositórios nos Cloud Source Repositories sem se ligar manualmente a eles.
Se estiver a associar um repositório externo, como um alojado no GitHub ou no Bitbucket, precisa de autorizações ao nível de administrador no repositório para associar inicialmente o repositório ao Cloud Build. As autorizações de administrador não são necessárias para criar acionadores num repositório que já esteja ligado ao Cloud Build.
Conclua os passos seguintes para estabelecer ligação ao GitHub ou ao Bitbucket:
Abra a página Acionadores na Google Cloud consola.
Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto.
Clique em Associar repositório.
Selecione a região onde quer criar o acionador no menu pendente Região.
Selecione o repositório onde armazenou o código fonte.
Se selecionar GitHub (espelhado) ou Bitbucket (espelhado) como o seu repositório de origem, o Cloud Build espelha o seu repositório no Cloud Source Repositories e usa o repositório espelhado para todas as suas operações.
Clique em Continuar.
Autentique-se no repositório de origem com o seu nome de utilizador e palavra-passe.
Na lista de repositórios disponíveis, selecione um repositório e, de seguida, clique em Associar.
Para repositórios externos, como o GitHub e o Bitbucket, tem de ter autorizações ao nível do proprietário para o Google Cloud projeto com o qual está a trabalhar.
Clique em Criar um acionador para continuar a criar um acionador de compilação para automatizar compilações para o código-fonte no repositório ou clique em Concluído.
Crie um acionador de versão
Consola
Abra a página Acionadores na Google Cloud consola.
Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto.
Clique em Criar acionador.
Introduza as seguintes definições do acionador:
Nome: introduza um nome para o acionador.
Região: selecione a região para o seu acionador.
Se o ficheiro de configuração de compilação associado ao acionador especificar um pool privado, a região que selecionar para o acionador tem de corresponder à região do pool privado.
Se selecionar
global
como região, o Cloud Build usa a região especificada no ficheiro de configuração da compilação para executar a compilação. Pode ser a região do conjunto privado, se especificar um conjunto privado no ficheiro de configuração de compilação, ou o conjunto predefinido global se não especificar um conjunto privado.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.
Pedido de envio: defina o seu acionador para iniciar uma compilação em commits para um pedido de envio.
Origem: selecione 1.ª geração ou 2.ª geração como origem. Só pode associar repositórios do GitHub e GitHub Enterprise quando seleciona 2.ª geração como origem. Para saber mais, consulte o artigo Repositórios do Cloud Build.
- Repositório: na lista de repositórios disponíveis, selecione um repositório. Para associar um novo repositório, consulte o artigo Estabelecer ligação a repositórios de origem.
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.Quando a compilação é executada, o Cloud Build copia o conteúdo do repositório para
/workspace
, o diretório de trabalho predefinido do Cloud Build. Saiba mais sobre os diretórios de trabalho na página Vista geral da configuração de compilação.Para permitir apenas compilações de origens específicas, defina uma política organizacional para integrações permitidas (
constraints/cloudbuild.allowedIntegrations
) para negar a interação com a origem definida no seu acionador. A política da organização substitui o acionador e a sua compilação não é executada. Para saber mais, consulte o artigo O Gate baseia-se na política da organização para o seu projeto.
Ficheiros incluídos (opcional): as alterações que afetem, pelo menos, um destes ficheiros vão invocar uma compilação. Pode usar strings globais para especificar vários ficheiros com carateres universais. Os carateres universais aceitáveis incluem os carateres suportados pela função Go Match,
**
e alternation.Ficheiros ignorados (opcional): as alterações que afetam apenas ficheiros ignorados não invocam uma compilação. Pode usar strings glob para especificar vários ficheiros com carateres universais. Os carateres universais aceitáveis incluem os carateres suportados por Go Match,
**
e alternation.Se especificar um ficheiro em Ficheiros incluídos e Ficheiros ignorados, as alterações a esse ficheiro não invocam uma compilação. Suponhamos que especifica
**/README.md
em Ficheiros ignorados para ignorarREADME.md
em qualquer diretório e especificasrc/*
em Ficheiros incluídos para iniciar uma compilação em alterações a qualquer ficheiro na pastasrc/
. Agora, se fizer uma alteração asrc/README.md
, o Cloud Build não inicia uma compilação. Sempre que envia uma alteração para a sua origem, o Cloud Build procura nos ficheiros alterados ficheiros incluídos e ignorados para determinar se deve ser invocado um processo de compilação:- Se enviar uma alteração para o repositório num ramo existente, o Cloud Build analisa os ficheiros alterados entre a confirmação que acabou de enviar e a confirmação para a qual o ramo apontava anteriormente.
- Se o seu repositório for um Cloud Source Repository e enviar uma alteração para um ramo recém-criado, o Cloud Build trata todos os ficheiros no repositório como ficheiros alterados.
- Se eliminar um ramo, o Cloud Build não inicia uma compilação.
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
Dockerfile
diretório ou do diretório de pacotes de compilação. Se o seu tipo de configuração de compilação forDockerfile
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 imagemDockerfile
ou do buildpack, é apresentada uma pré-visualização do comandodocker build
oupack
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.
- 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
- Tipo: selecione o tipo de configuração a usar para a sua compilação.
Usar pool privado: este campo é apresentado se tiver selecionado Dockerfile como opção de Configuração. Selecione esta caixa de verificação se estiver a executar a compilação num conjunto privado.
Piscina privada: se selecionou Usar piscina privada, especifique o nome do recurso da piscina privada do formulário
projects/WORKERPOOL_PROJECT_ID/locations/REGION/workerPools/WORKERPOOL_ID
.Variáveis de substituição (opcional): se selecionou o ficheiro de configuração do Cloud Build como opção de configuração de compilação, pode optar por definir variáveis de substituição específicas do acionador através deste campo. Por exemplo, suponhamos que está a criar vários acionadores em que cada acionador implementa a sua app num ambiente específico. Pode especificar que a sua app é implementada num ambiente no ficheiro de configuração de compilação e, em seguida, usar este campo para definir variáveis de substituição que especificam o ambiente para o qual este acionador deve ser implementado. Para obter informações sobre como especificar valores de substituição em ficheiros de configuração de compilação, consulte o artigo Substituir valores de variáveis.
Aprovação (opcional): selecione a caixa para exigir aprovação antes da execução da compilação.
Conta de serviço: selecione a conta de serviço a usar quando invocar o acionador. Apenas a conta de serviço especificada no seu acionador é usada para compilações executadas por acionadores. Se especificou uma conta de serviço na configuração de compilação, esta é ignorada durante a execução da compilação quando usa acionadores.
Clique em Criar para guardar o acionador de compilação.
gcloud
Para criar um acionador se o seu código-fonte estiver nos 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
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 é a conta de serviço a usar para operações de acionamento e compilação.
- Opcional: para configurar o acionador de modo a exigir aprovação, defina a flag
--require-approval
.
Para ver uma lista completa de flags, consulte a referência gcloud
sobre como criar acionadores para os
Cloud Source Repositories.
Para criar um acionador se o seu código fonte estiver no GitHub:
gcloud builds triggers create github \
--name=TRIGGER_NAME \
--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
Onde:
- REGION é a região do seu acionador.
- REPO_NAME é o nome do seu repositório.
- REPO_OWNER é o nome de utilizador do proprietário do 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 é a conta de serviço a usar para operações de acionamento e compilação.
- Opcional:
--require-approval
é a flag a incluir para configurar o acionador de modo a exigir aprovação. - Opcional:
--include-logs-with-status
é uma flag que pode especificar para mostrar os registos de compilação dos seus repositórios. Esta flag é suportada para compilações de repositórios do GitHub e do GitHub Enterprise.
Para ver uma lista completa de flags, consulte a referência gcloud
sobre como criar acionadores para o GitHub.
Depois de executar o comando gcloud
para criar um acionador através dos Cloud Source Repositories ou do GitHub, deve ver um resultado semelhante ao seguinte:
NAME CREATE_TIME STATUS
trigger-001 2019-10-30T20:45:03+00:00
Teste um acionador de versão
Para testar manualmente um acionador de compilação:
Abra a página Acionadores na Google Cloud consola.
Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto.
Localize o acionador na lista e, de seguida, clique em Executar.
Ignore um acionador de compilação
Em alguns casos, pode querer fazer uma alteração ao código-fonte, mas não quer invocar uma compilação. Por exemplo, pode não querer invocar uma compilação quando atualiza a documentação ou os ficheiros de configuração.
Nestes cenários, pode incluir [skip ci]
ou [ci skip]
na mensagem de commit e não é invocado um build.
Se quiser executar uma compilação nesse commit mais tarde, use o botão Executar na página Acionadores.
Inclua o histórico do repositório numa compilação
Para compilar a sua origem num repositório Git, o Cloud Build executa uma clonagem superficial do repositório. Isto significa que apenas a confirmação única que iniciou a compilação é extraída no espaço de trabalho para compilar. O Cloud Build não extrai outros ramos nem histórico. Isto é feito por motivos de eficiência, para que as compilações não tenham de esperar para obter todo o repositório e histórico apenas para compilar uma única confirmação.
Se quiser incluir mais do histórico do seu repositório na compilação, adicione um passo de compilação no ficheiro de configuração da compilação para "desfazer" a clonagem superficial. Por exemplo:
steps:
- name: gcr.io/cloud-builders/git
args: ['fetch', '--unshallow']
...
Para mais informações sobre o git fetch
, consulte a referência
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.
Reenvie uma compilação para aprovação
Se a sua compilação tiver sido rejeitada, pode reenviá-la para aprovação seguindo estes passos na Google Cloud consola:
Abra a página Histórico do Cloud Build na Google Cloud consola.
Clique no ID da compilação que quer reenviar para aprovação.
Clique em Reconstruir na parte superior da página para reenviar a compilação para aprovação.
A compilação é iniciada quando um utilizador com autorizações a aprova. Para saber mais sobre as aprovações do Cloud Build, consulte o artigo Restrinja as compilações com aprovação.
Atualize um acionador de compilação
Consola
Abra a página Acionadores na Google Cloud consola.
Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto.
Localize a linha com o acionador que quer atualizar.
Clique no menu (reticências verticais) localizado na extremidade direita da linha.
Selecione Editar.
gcloud
Para atualizar um acionador:
Exporte o acionador que quer atualizar:
gcloud beta builds triggers export TRIGGER_NAME --destination=EXPORT_PATH
Onde:
TRIGGER_NAME
é o nome do acionador.EXPORT_PATH
é o caminho para o qual quer exportar o seu acionador. Por exemplo, pode especificar o seu caminho comoexamples/trigger.yaml
. Tenha em atenção que o nome do ficheiro do acionador deve ter a extensão YAML.
Abra o ficheiro que contém o acionador exportado.
O seu ficheiro terá um aspeto 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 manualmente o ficheiro para atualizar o acionador.
Para ver os campos que pode adicionar ou remover do seu acionador, consulte o recurso trigger.
Guarde o ficheiro.
Importe o acionador:
gcloud builds triggers import --source=IMPORT_PATH
Onde:
IMPORT_PATH
é o caminho do acionador que quer importar.
O seu acionador de compilação está agora atualizado.
Desative um acionador de compilação
Consola
Abra a página Acionadores na Google Cloud consola.
Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto.
Localize a linha com o acionador que quer desativar.
Clique no menu (reticências verticais) localizado na extremidade direita da linha.
Selecione Desativar.
gcloud
Para desativar um acionador:
Exporte o acionador que quer desativar:
gcloud beta builds triggers export TRIGGER_NAME --destination=EXPORT_PATH
Onde:
TRIGGER_NAME
é o nome do acionador.EXPORT_PATH
é o caminho para o qual quer exportar o acionador. Por exemplo, pode especificar o seu caminho comoexamples/trigger.yaml
. Tenha em atenção que o nome do ficheiro do acionador deve ter a extensão YAML.
Abra o ficheiro que contém o acionador exportado.
O seu ficheiro terá um aspeto 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 ficheiro e defina o valor comoTrue
.disabled: True
Guarde o ficheiro.
Importe o acionador:
gcloud builds triggers import --source=IMPORT_PATH
Onde:
IMPORT_PATH
é o caminho do acionador que quer importar.
O seu acionador de compilação está agora desativado.
Desativar um acionador não o elimina. Para eliminar um acionador, consulte o artigo Eliminar um acionador de compilação. Pode reativar um acionador alterando o estado para Ativado.
Elimine um acionador de compilação
Consola
Abra a página Acionadores na Google Cloud consola.
Na barra de ferramentas da Google Cloud consola, selecione o seu Google Cloud projeto.
Localize a linha com o acionador que quer eliminar.
Clique no menu (reticências verticais) localizado na extremidade direita da linha.
Selecione Eliminar.
gcloud
Para eliminar um acionador, execute o seguinte comando:
gcloud builds triggers delete TRIGGER_NAME
Onde:
TRIGGER_NAME
é o nome do acionador.
Para ver uma lista completa de flags, consulte a referência gcloud
para saber como eliminar acionadores.
Implicações de segurança dos acionadores de compilação
A conta de serviço configurada para um acionador de compilação pode fornecer autorizações de tempo de compilação elevadas aos utilizadores que usam acionadores para invocar uma compilação. Isto aplica-se à conta de serviço predefinida do Cloud Build e às contas de serviço especificadas pelo utilizador. Tenha em atenção as seguintes implicações de segurança ao usar acionadores de compilação:
- Um utilizador sem acesso ao seu projeto do Google Cloud, mas com acesso de escrita ao repositório associado a acionadores de compilação no projeto, tem autorizações para alterar o código que está a ser compilado.
- Se estiver a usar acionadores de pedidos de envio do GitHub, qualquer utilizador com acesso de leitura ao repositório pode enviar um pedido de envio, o que pode executar uma compilação que inclua alterações ao código no pedido de envio. Para saber como desativar este comportamento para acionadores de pedidos de envio do GitHub, consulte o artigo Criar acionadores do GitHub.
Recomendamos que crie uma conta de serviço com apenas as funções necessárias para o seu acionador. Para saber mais, consulte o artigo Configure contas de serviço especificadas pelo utilizador. Para saber mais sobre a conta de serviço predefinida do Cloud Build e as respetivas autorizações associadas, consulte o artigo Conta de serviço do Cloud Build.
O que se segue?
- Saiba como iniciar compilações manualmente ou configurar implementações que requerem invocação manual através da compilação manual de código em repositórios de origem.
- Saiba como criar acionadores do GitHub.
- Saiba como automatizar compilações em resposta a eventos do Pub/Sub.
- Saiba como automatizar compilações em resposta a eventos de webhook.
- Saiba como ver os resultados da compilação para acionadores de compilação.
- Saiba como fazer implementações azul-verde no Compute Engine.
- Saiba como resolver problemas de erros de compilação.