Nesta página, explicamos como conectar um repositório do GitHub ao Cloud Build. Para saber mais sobre os repositórios do Cloud Build, consulte Repositórios do Cloud Build.
Antes de começar
-
Ative as APIs Cloud Build and Secret Manager.
- Tenha o código-fonte pronto em um repositório do GitHub.
- Tenha um
Dockerfile
ou um arquivo de configuração do Cloud Build no seu repositório de origem do GitHub. - Se você estiver conectando o repositório ao Cloud Build inicialmente, verifique se tem permissões no nível do administrador no repositório. Para saber mais sobre as permissões de repositório do GitHub, consulte Níveis de permissão de repositório para uma organização.
Para usar os comandos
gcloud
nesta página, instale a Google Cloud CLI.
Como conectar um host do GitHub
Console
Para conectar seu repositório do GitHub ao Cloud Build, faça o seguinte:
Abra a página Repositórios no console do Google Cloud.
Você verá a página Repositórios.
No seletor de projetos, na barra superior, selecione seu projeto do Google Cloud.
Na parte de cima da página, selecione a guia 2nd gen.
Clique em Criar conexão de host para conectar um novo host ao Cloud Build.
No painel à esquerda, selecione GitHub como seu provedor de fonte.
Na seção Configurar conexão, insira as seguintes informações:
Região: selecione uma região para sua conexão.
Nome: digite um nome para sua conexão.
Clique em Conectar.
Depois de clicar no botão Conectar, você precisará autorizar o app GitHub do Cloud Build a acessar sua conta do GitHub. Você pode revogar o acesso ao app desinstalando ou excluindo o app do seu host a qualquer momento.
O Cloud Build solicita a autorização da sua conta de usuário do GitHub e armazena o token de autorização resultante como um secret no Secret Manager do seu projeto. O token de autorização é usado para validar o acesso da sua conta de usuário para a instalação do app GitHub do Cloud Build e aos repositórios vinculados. A conta do agente de serviço do Cloud Build (
service-{projectNumber}@gcp-sa-cloudbuild.iam.gserviceaccount.com
) é usada para acessar seu secret. Para ver o secret, consulte Listar secrets e ver detalhes do secret.Depois de autorizar o app GitHub do Cloud Build, você será redirecionado para a página Repositórios do Cloud Build.
Você criou uma conexão com o GitHub.
gcloud
Para conectar o host do GitHub usando gcloud
,
siga estas etapas:
Digite o seguinte comando para iniciar uma conexão com seu repositório do GitHub:
gcloud builds connections create github CONNECTION_NAME --region=REGION
Em que:
- CONNECTION_NAME é o nome da conexão.
REGION é a região do gatilho.
Depois de executar o comando
gcloud builds connections
, você verá um link para autorizar o app GitHub do Cloud Build.Faça login na sua conta
github.com
.Siga o link para autorizar o app GitHub do Cloud Build.
Depois de autorizar o app, o Cloud Build armazena um token de autenticação como um secret no Secret Manager no seu projeto do Google Cloud. É possível visualizar os secrets na página Secret Manager.
Instale o app GitHub do Cloud Build na sua conta ou na sua organização.
Permita a instalação usando sua conta do GitHub e selecione as permissões do repositório quando solicitado.
Verifique a instalação da sua conexão do GitHub executando o seguinte comando:
gcloud builds connections describe CONNECTION_NAME --region=REGION
Em que:
- CONNECTION_NAME é o nome da conexão.
- REGION é a região do gatilho.
Se o campo
installationState
estiver definido comoCOMPLETE
, a conexão foi instalada. Caso contrário, o campoinstallationState
fornecerá um link para outras etapas necessárias.
Você criou uma conexão com o GitHub.
Como conectar um host do GitHub de maneira programática
Terraform
Conecte seu host do GitHub ao Cloud Build usando o provedor do Google Terraform. Para isso, basta concluir as etapas a seguir:
Instale o app GitHub do Cloud Build na sua conta do GitHub ou em uma organização sua.
Crie um token de acesso pessoal.
Certifique-se de configurar seu token para que não tenha data de validade e selecione as seguintes permissões quando solicitado no GitHub:
repo
eread:user
. Se o app estiver instalado em uma organização, selecione também a permissãoread:org
.Depois de gerar seu token de acesso pessoal, salve o token gerado em um local seguro. Você usará o token gerado nas próximas etapas.
No exemplo abaixo, o snippet de código faz o seguinte:
Configura o provedor Terraform do Google
Cria um secret para armazenar tokens de acesso pessoal do GitHub a fim de conceder permissões para que o agente de serviço do Cloud Build acesse o secret
Cria uma conexão com o GitHub
// Configure the terraform google provider terraform { required_providers { google = {} } } // Create a secret containing the personal access token and grant permissions to the Service Agent resource "google_secret_manager_secret" "github_token_secret" { project = PROJECT_ID secret_id = SECRET_ID replication { automatic = true } } resource "google_secret_manager_secret_version" "github_token_secret_version" { secret = google_secret_manager_secret.github_token_secret.id secret_data = GITHUB_PAT } data "google_iam_policy" "serviceagent_secretAccessor" { binding { role = "roles/secretmanager.secretAccessor" members = ["serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com"] } } resource "google_secret_manager_secret_iam_policy" "policy" { project = google_secret_manager_secret.github_token_secret.project secret_id = google_secret_manager_secret.github_token_secret.secret_id policy_data = data.google_iam_policy.serviceagent_secretAccessor.policy_data } // Create the GitHub connection resource "google_cloudbuildv2_connection" "my_connection" { project = PROJECT_ID location = REGION name = CONNECTION_NAME github_config { app_installation_id = INSTALLATION_ID authorizer_credential { oauth_token_secret_version = google_secret_manager_secret_version.github_token_secret_version.id } } depends_on = [google_secret_manager_secret_iam_policy.policy] }
Em que:
- PROJECT_NUMBER é o número do projeto do Google Cloud.
- SECRET_ID é o ID do token ou secret no Secret Manager.
- GITHUB_PAT é o ID do token de acesso pessoal no GitHub.
- PROJECT_ID é o ID do projeto no Google Cloud.
- REGION é a região da conexão.
- CONNECTION_NAME é o nome da sua conexão do GitHub.
- INSTALLATION_ID é o ID de instalação do app GitHub do Cloud Build. O
ID de instalação pode ser encontrado no URL do app GitHub
do Cloud Build. No URL a seguir,
https://github.com/settings/installations/1234567
, o ID de instalação é o valor numérico1234567
.
Você criou uma conexão com o GitHub.
gcloud
Para conectar o host do GitHub usando um token e um ID de instalação recebidos de uma conexão anterior, siga estas etapas:
Instale o app GitHub do Cloud Build na sua conta do GitHub ou em uma organização sua.
Crie um token de acesso pessoal.
Certifique-se de configurar seu token para que não tenha data de validade e selecione as seguintes permissões quando solicitado no GitHub:
repo
eread:user
. Se o app estiver instalado em uma organização, selecione também a permissãoread:org
.Depois de gerar seu token de acesso pessoal, salve o token gerado em um local seguro. Você usará o token gerado nas próximas etapas.
Armazene o token no Secret Manager do seu projeto do Google Cloud executando o seguinte comando:
echo -n TOKEN | gcloud secrets create SECRET_NAME --data-file=-
Em que:
- TOKEN é seu token de acesso pessoal.
- SECRET_NAME é o nome que você quer dar ao secret no Secret Manager.
Conceda acesso ao agente de serviço do Cloud Build no secret, em que SECRET_NAME é o nome do secret armazenado no Secret Manager:
PROJECT_ID=$(gcloud config list --format="value(core.project)") PN=$(gcloud projects describe ${PROJECT_ID} --format="value(projectNumber)") CLOUD_BUILD_SERVICE_AGENT="service-${PN}@gcp-sa-cloudbuild.iam.gserviceaccount.com" gcloud secrets add-iam-policy-binding SECRET_NAME \ --member="serviceAccount:${CLOUD_BUILD_SERVICE_AGENT}" \ --role="roles/secretmanager.secretAccessor"
Crie sua conexão com o GitHub:
gcloud builds connections create github CONNECTION_NAME \ --authorizer-token-secret-version=projects/PROJECT_ID/secrets/SECRET_NAME/versions/1 \ --app-installation-id=INSTALLATION_ID --region=REGION
Em que:
- CONNECTION_NAME é o nome da conexão.
- PROJECT_ID é o ID do projeto no Google Cloud.
- SECRET_NAME é o nome do secret conforme armazenado no Secret Manager.
- INSTALLATION_ID é o ID de instalação do seu app do GitHub. O
ID de instalação pode ser encontrado no URL do
app GitHub para Google Cloud Build. No URL a seguir,
https://github.com/settings/installations/1234567
, o ID de instalação é o valor numérico1234567
. - REGION é a região da sua conexão.
Você criou uma conexão com o GitHub.
Como conectar um repositório do GitHub
Console
Para conectar um repositório do GitHub a uma conexão de host, siga estas etapas:
Abra a página Repositórios no console do Google Cloud.
Você verá a página Repositórios.
Na parte de cima da página, selecione a guia 2nd gen.
Clique em Vincular repositórios para vincular repositórios da sua conexão.
O painel Conectar repositórios será exibido.
No painel Conectar repositórios, insira as seguintes informações:
- Conexão: selecione uma conexão no menu suspenso.
Repository: selecione um repositório para vincular à sua conexão.
Nome do repositório: digite um nome para o repositório.
- Gerado: selecione essa opção para que o Cloud Build gere nomes de repositório automaticamente em seu nome para repositórios selecionados.
Manual: selecione essa opção para especificar manualmente os nomes dos repositórios selecionados.
Se você selecionar Manual, poderá modificar os nomes dos repositórios selecionados na seção Nomes dos repositórios.
Clique em Vincular para vincular seu repositório à conexão.
Você vinculou seu repositório do GitHub à conexão.
gcloud
Para adicionar um repositório do GitHub à sua conexão, digite o seguinte comando:
gcloud builds repositories create REPO_NAME \
--remote-uri=REPO_URI \
--connection=CONNECTION_NAME --region=REGION
Em que:
- REPO_NAME é o nome do repositório;
- REPO_URI é o link para o repositório do GitHub. Por exemplo,
https://github.com/cloud-build/test-repo.git
. - CONNECTION_NAME é o nome da conexão.
- REGION é a região da conexão.
Você vinculou um repositório à sua conexão com o GitHub.
Terraform
Para adicionar um repositório do GitHub à sua conexão, adicione o seguinte snippet de código à sua configuração do Terraform:
resource "google_cloudbuildv2_repository" "my_repository" {
project = "PROJECT_ID"
location = "REGION"
name = "REPO_NAME"
parent_connection = google_cloudbuildv2_connection.my_connection.name
remote_uri = "URI"
}
Em que:
- PROJECT_ID é o ID do projeto no Google Cloud.
- REPO_NAME é o nome do repositório do GitHub.
- REGION é a região da conexão.
- URI é o URI do host do repositório. Por exemplo,
https://github.com/myuser/myrepo.git
.
Você vinculou um repositório à sua conexão com o GitHub.
A seguir
- Saiba como criar repositórios do GitHub.
- Saiba como realizar implantações azul-verde no Compute Engine.