conectar-se a um repositório do GitHub

Nesta página, explicamos como conectar um repositório do GitHub. para o Cloud Build. Para saber mais sobre os repositórios do Cloud Build, consulte Repositórios do Cloud Build.

Antes de começar

  • Enable the Cloud Build and Secret Manager APIs.

    Enable the APIs

  • 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 do 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:

  1. Abra a página Repositórios no console do Google Cloud.

    Abrir a página Repositórios

    Você verá a página Repositórios.

  2. No seletor de projetos, na barra superior, escolha seu projeto do Google Cloud.

  3. Na parte de cima da página, selecione a guia 2a geração.

  4. Clique em Criar conexão de host para conectar um novo host ao Cloud Build.

  5. No painel esquerdo, selecione GitHub como seu provedor de origem.

  6. Na seção Configurar conexão, insira as seguintes informações:

    1. Região: selecione uma região para a conexão.

    2. Nome: digite um nome para a conexão.

  7. Clique em Conectar.

    Depois de clicar no botão Conectar, será necessário autorizar o App GitHub do Cloud Build para acessar sua conta do GitHub. Você pode revogar o acesso ao aplicativo desinstalando ou excluindo o aplicativo do com o 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 em o Secret Manager do projeto. O token de autorização é usado para validar o acesso da sua conta de usuário à instalação do app GitHub do Cloud Build e aos repositórios vinculados. A conta de agente de serviço do Cloud Build (service-{projectNumber}@gcp-sa-cloudbuild.iam.gserviceaccount.com) é usada para acessar seu secret. Para acessar 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 seu host do GitHub usando gcloud, faça o seguinte: siga estas etapas:

  1. Digite o seguinte comando para iniciar uma conexão com seu GitHub repositório:

     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ê vai encontrar um link para autorizar o app GitHub do Cloud Build.

  2. Faça login na sua conta do github.com.

  3. Clique no link para autorizar o app GitHub do Cloud Build.

    Depois de autorizar o app, o Cloud Build armazena uma como um secret no Secret Manager da projeto. Confira os secrets no Secret Manager página.

  4. Instale o app GitHub do Cloud Build na sua conta ou em uma organização de sua propriedade.

    Permitir a instalação usando sua conta do GitHub e selecionar o repositório quando solicitado.

  5. Verifique a instalação da 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 como COMPLETE, a conexão terá sido instalada. Caso contrário, o campo installationState fornecerá um link com as etapas adicionais necessárias.

Você criou uma conexão com o GitHub.

Como conectar um host do GitHub de maneira programática

Terraform

É possível conectar o host do GitHub ao Cloud Build usando o provedor do Terraform do Google seguindo estas etapas:

  1. Instalar o app GitHub do Cloud Build na sua conta do GitHub ou em uma organização de sua propriedade.

  2. Crie um token de acesso pessoal.

    Não se esqueça de configurar o token sem data de validade e selecionar a a seguir, quando solicitado no GitHub: repo e read:user. Se o app for instalado em uma organização, confirme também selecione a permissão read:org.

    Depois de gerar seu token de acesso pessoal, salve o token gerado o token em um local seguro. Você vai usar o token gerado na etapas seguintes.

No exemplo a seguir, 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 para conceder permissões ao Agente de serviço do Cloud Build para acessar o secret

  • Cria uma conexão do 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 {
            auto {}
        }
    }
    
    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 seu token ou secret no Secret Manager.
  • GITHUB_PAT é o ID do seu 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 conexão do GitHub.
  • INSTALLATION_ID é o ID de instalação do app GitHub do Cloud Build. Seu o ID de instalação pode ser encontrado no URL do Cloud Build App GitHub. No URL a seguir, https://github.com/settings/installations/1234567, o ID de instalação é o valor numérico 1234567.

Você criou uma conexão com o GitHub.

gcloud

Para conectar seu host do GitHub usando um token e um ID de instalação existentes obtido de uma conexão anterior, siga estas etapas:

  1. Instale o app GitHub do Cloud Build na sua conta do GitHub ou em uma organização que você tenha.

  2. Crie um token de acesso pessoal.

    Não se esqueça de configurar o token sem data de validade e selecionar a a seguir, quando solicitado no GitHub: repo e read:user. Se o app for instalado em uma organização, confirme também selecione a permissão read:org.

    Depois de gerar seu token de acesso pessoal, salve o token gerado o token em um local seguro. Você vai usar o token gerado na etapas seguintes.

  3. 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.
  4. Conceda acesso ao agente de serviço do Cloud Build no secret, em que SECRET_NAME é o nome do secret armazenado em 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"
    
  5. Crie sua conexão do 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 armazenado em com o Secret Manager.
    • INSTALLATION_ID é o ID de instalação do app do GitHub. Seu o ID de instalação pode ser encontrado no URL do Cloud Build App GitHub. No URL a seguir, https://github.com/settings/installations/1234567, o ID de instalação é o valor numérico 1234567.
    • 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, conclua as etapas a seguir:

  1. Abra a página Repositórios no console do Google Cloud.

    Abrir a página Repositórios

    Você verá a página Repositórios.

  2. Na parte de cima da página, selecione a guia 2ª geração.

  3. Clique em Vincular repositórios para vincular repositórios a partir da sua conexão.

    Você verá o painel Conectar repositórios.

  4. No painel Conectar repositórios, digite as seguintes informações:

    1. Conexão: selecione uma conexão no menu suspenso.
    2. Repositório: selecione um repositório para vincular à conexão.

    3. Nome do repositório: digite um nome para o repositório.

      1. Gerado: selecione essa opção para que o Cloud Build automaticamente gerados por você em seu nome para os repositórios selecionados.
      2. Manual: selecione esta opção para especificar manualmente os nomes dos seus repositórios selecionados.

        Se você selecionar Manual, poderá modificar os nomes das repositórios selecionados na seção Nomes dos repositórios.

  5. Clique em Vincular para vincular o repositório à conexão.

Você vinculou com sucesso o repositório do GitHub à sua 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 seu 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 do GitHub.

Terraform

Para adicionar um repositório do GitHub à sua conexão, adicione o seguinte snippet de código à 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 sua 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 do GitHub.

A seguir