O Cloud Build permite criar gatilhos para criar repositórios hospedados no GitHub Enterprise. É possível executar builds em resposta a eventos como envios de commit ou solicitações de mesclagem associadas ao seu repositório do GitHub Enterprise.
Nesta página, explicamos como ativar gatilhos de build para uma instância do GitHub Enterprise. Para mais informações, consulte Acionadores do Cloud Build e Repositórios do Cloud Build.
Antes de começar
Siga as instruções para conectar-se a um host do GitHub Enterprise.Ative as APIs Cloud Build e Secret Manager, se alguma delas ainda não estiver ativada.
Funções necessárias para ativar APIs
Para ativar APIs, você precisa da permissão
serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.
Para criar um gatilho para um repositório do GitHub Enterprise, você precisa ter uma conexão entre Google Cloud e seu repositório. Para criar uma conexão pelo app GitHub Enterprise em Google Cloud, consulte Conectar a um repositório do GitHub Enterprise.
Criar um gatilho do GitHub Enterprise
Nesta seção, explicamos como criar um gatilho e vinculá-lo à instalação do GitHub Enterprise. Se você quiser usar gatilhos do GitHub Enterprise em uma rede particular, consulte Como criar repositórios do GitHub Enterprise em uma rede particular para mais instruções.
Console do Google Cloud
Para criar acionadores do GitHub Enterprise usando o console Google Cloud , faça o seguinte:
Abra a página Gatilhos no console do Google Cloud .
Selecione o projeto Google Cloud e 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 seu gatilho.
- Se o arquivo de configuração de build associado ao gatilho especificar um pool particular, o Cloud Build usará esse pool para executar o build. Nesse caso, a região especificada no gatilho precisa corresponder à região em que você criou o pool particular.
- Se o arquivo de configuração de build associado ao gatilho não especificar um pool particular, o Cloud Build usará o pool padrão para executar o build na mesma região do 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 pull: configure o gatilho para iniciar um build em commits para uma solicitação de envio.
Origem: configure informações sobre seu repositório do GitHub Enterprise:
Serviço de repositório: selecione Cloud Build.
Geração de repositório: selecione 2ª geração como sua origem.
Repositório: na lista de repositórios disponíveis, selecione o repositório.
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).
Controle de comentários: se você selecionou Solicitação de pull como seu Evento, escolha uma das seguintes opções para controlar se um build é executado automaticamente pelo gatilho:
Obrigatório, exceto para proprietários e colaboradores: quando um pedido de extração é criado ou atualizado por um proprietário ou colaborador do repositório, os builds são executados automaticamente pelo gatilho. Se um colaborador externo iniciar a ação, os builds serão executados somente depois que um proprietário ou colaborador comentar
/gcbrunna solicitação de envio.Obrigatório: quando uma solicitação de envio é criada ou atualizada por qualquer colaborador, os builds são executados somente depois que um proprietário ou colaborador comenta
/gcbrunna solicitação de envio. Os builds são executados sempre que uma mudança é feita em uma solicitação de envio.Não obrigatório: quando uma solicitação de envio é criada ou atualizada por qualquer colaborador, os builds são executados automaticamente por gatilhos.
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.
- Type: selecione o tipo de configuração a ser usado para o build.
- Detecção automática: o Cloud Build detecta automaticamente o tipo de configuração se você tiver um
cloudbuild.yamlouDockerfileno repositório. - 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
Dockerfilepara sua configuração. - Buildpacks: use os buildpacks na sua configuração.
- Detecção automática: o Cloud Build detecta automaticamente o tipo de configuração se você tiver um
Local: especifique o local de configuração.
- Repositório: se o arquivo de configuração estiver localizado no seu
repositório remoto, forneça o local do
arquivo de configuração da versão ou do diretório
Dockerfilee um nome para a imagem resultante. Se sua configuração for umDockerfile, você poderá fornecer um tempo limite para a criação. Depois de fornecer oDockerfilee o nome da imagem, você verá uma visualização do comandodocker buildque sua o build executará. - 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 consoleGoogle Cloud usando a sintaxe YAML ou JSON. Clique em Concluído para salvar a configuração de build.
- Repositório: se o arquivo de configuração estiver localizado no seu
repositório remoto, forneça o local do
arquivo de configuração da versão ou do diretório
- Type: selecione o tipo de configuração a ser usado para o build.
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.
Registros da versão (opcional): marque a caixa para enviar registros da versão ao GitHub. Para saber como visualizar registros de build, consulte Como visualizar registros de build.
Conta de serviço: selecione a conta de serviço a ser usada ao invocar seu gatilho. Se a política da organização permitir o uso da conta de serviço legada do Cloud Build, deixe em branco para usar a conta legada. Caso contrário, selecione a conta de serviço específica a ser usada, mesmo que seja a conta de serviço padrão do Compute Engine.
Clique em Criar para salvar o gatilho de compilação.
Para criar acionadores do GitHub usando comandos gcloud, consulte os comandos gcloud
para Como criar um gatilho de compilação.
CLI da gcloud
Para criar acionadores do GitHub Enterprise usando comandos gcloud, execute o seguinte
comando:
gcloud builds triggers create github \
--name=TRIGGER_NAME \
--repository=projects/PROJECT_ID/locations/REGION/connections/CONNECTION_NAME/repositories/REPO_NAME \
--branch-pattern=BRANCH_PATTERN # or --tag-pattern=TAG_PATTERN \
--build-config=BUILD_CONFIG_FILE \
--region=REGION \
--service-account=SERVICE-ACCOUNT
Em que:
- TRIGGER_NAME é o nome do gatilho.
- PROJECT_ID é o ID do projeto Google Cloud .
- REGION é a região do gatilho.
- CONNECTION_NAME é o nome da sua conexão do GitHub Enterprise.
- REPO_NAME é o nome 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 é a conta de serviço a ser usada para operações de gatilho e build.
API
Para criar um acionador do GitHub Enterprise com a API, use o modelo JSON a seguir:
{
"filename": "cloudbuild.yaml",
"name": "curl-trigger",
"description": "curl trigger",
"repository_event_config": {
"repository": "REPO_NAME",
"repository_type": "GITHUB_ENTERPRISE",
// Field filter must be only one of the following:
"pullRequest": "PULL_REQUEST_FILTER",
"push": "PUSH_FILTER"
}
}
Em que:
- "REPO_NAME" é o nome da conexão do repositório que você configurou no Cloud Build.
- "PULL_REQUEST_FILTER" é uma instância de
PullRequestFilter, que define o filtro que permite ao Cloud Build acionar um build quando uma solicitação de envio correspondente é feita no GitHub Enterprise. - "PUSH_FILTER" é uma instância de
PushFilter, que define o filtro que permite ao Cloud Build acionar um build quando um push correspondente é feito no GitHub Enterprise.
Insira o seguinte comando curl no terminal:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -H "x-goog-user-project: PROJECT_NUMBER" https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/triggers -d @trigger.json
Em que:
- PROJECT_NUMBER é o número do projeto do Google Cloud .
- PROJECT_ID é o ID do projeto Google Cloud .
Compartilhamento de dados
Os dados enviados ao GitHub Enterprise pelo Cloud Build ajudam a identificar acionadores por nome e ver os resultados do build no GitHub Enterprise.
Os seguintes dados são compartilhados entre o Cloud Build e o GitHub Enterprise:
- ID do projeto na nuvem
- Nome do gatilho
- registros de compilações.
Se você criou acionadores antes de agosto de 2020, talvez o compartilhamento de dados não esteja ativado para seu projeto. É possível ativar o compartilhamento de dados para todos os gatilhos do GitHub Enterprise no seu projeto clicando em Ativar na guia de compartilhamento de dados do Cloud Build.
Se você tiver verificações de status obrigatórias ativadas para um repositório do GitHub Enterprise, a ativação do compartilhamento de dados poderá interromper temporariamente as verificações de status. Para ajustar as configurações de verificação de status para procurar seu nome de gatilho, é possível:
- desativar qualquer verificação necessária específica do Cloud Build no repositório do GitHub Enterprise;
- Verificar se o compartilhamento de dados está ativado no Cloud Build
- executar uma nova compilação no Cloud Build que publica o status no seu repositório;
- reativar verificações de status necessárias, selecionando o nome do gatilho.
Próximas etapas
- Saiba como criar e gerenciar gatilhos.
- Saiba como criar repositórios do GitHub Enterprise em uma rede particular.
- Saiba como fazer implantações azul-verde no Compute Engine.