Associe um repositório do GitHub

Esta página explica como associar um repositório do GitHub ao Cloud Build. Para saber mais sobre os repositórios do Cloud Build, consulte o artigo 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 num repositório do GitHub.
  • Ter um Dockerfile ou um ficheiro de configuração do Cloud Build no seu repositório de origem do GitHub.
  • Se estiver a associar inicialmente o seu repositório ao Cloud Build, certifique-se de que tem autorizações ao nível de administrador no seu repositório. Para saber mais sobre as autorizações de repositórios do GitHub, consulte o artigo Níveis de autorização de repositórios para uma organização.
  • Para usar os comandos gcloud nesta página, instale a CLI do Google Cloud.

Crie uma associação a um anfitrião do GitHub

Consola

Para associar o seu repositório do GitHub ao Cloud Build:

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

    É apresentada a página Repositórios.

  2. No seletor de projetos na barra superior, selecione o seu Google Cloud projeto.

  3. Na parte superior da página, selecione o separador 2.ª geração.

  4. Clique em Criar associação de anfitrião para associar um novo anfitrião ao Cloud Build.

  5. No painel do lado esquerdo, selecione GitHub como fornecedor de origem.

  6. Na secção Configurar associação, introduza as seguintes informações:

    1. Região: selecione uma região para a sua associação.

    2. Nome: introduza um nome para a ligação.

  7. Clique em Ligar.

    Depois de clicar no botão Associar, é-lhe pedido que autorize a app GitHub do Cloud Build a aceder à sua conta do GitHub. Pode revogar o acesso à app desinstalando ou eliminando a app do seu anfitrião em qualquer altura.

    O Cloud Build pede autorização da sua conta de utilizador do GitHub e armazena a chave de autorização resultante como um segredo no Secret Manager no seu projeto. O token de autorização é usado para validar o acesso da sua conta de utilizador para a instalação da app GitHub do Cloud Build e para os repositórios associados. A conta do agente de serviço do Cloud Build (service-{projectNumber}@gcp-sa-cloudbuild.iam.gserviceaccount.com) é usada para aceder ao seu segredo. Para ver o seu segredo, consulte o artigo Liste segredos e veja detalhes de segredos.

    Depois de autorizar a app GitHub do Cloud Build, é redirecionado para a página Repositórios do Cloud Build.

gcloud

Para associar o seu anfitrião do GitHub através do gcloud, conclua os seguintes passos:

  1. Introduza o seguinte comando para iniciar uma ligação ao seu repositório do GitHub:

     gcloud builds connections create github CONNECTION_NAME --region=REGION
    

    Onde:

    • CONNECTION_NAME é um nome para a sua associação, tal como aparece no Cloud Build.
    • REGION é a região do seu acionador.

    Depois de executar o comando gcloud builds connections, é apresentado um link para autorizar a app GitHub do Cloud Build.

  2. Inicie sessão na sua conta do github.com.

  3. Siga o link para autorizar a app GitHub do Cloud Build.

    Depois de autorizar a app, o Cloud Build armazena um token de autenticação como um segredo no Secret Manager no seu Google Cloud projeto. Pode ver os seus segredos na página Secret Manager.

  4. Instale a app GitHub do Cloud Build na sua conta ou numa organização da qual é proprietário.

    Permita a instalação através da sua conta do GitHub e selecione as permissões do repositório quando lhe for pedido.

  5. Valide a instalação da associação ao GitHub executando o seguinte comando:

     gcloud builds connections describe CONNECTION_NAME --region=REGION
    

    Onde:

    • CONNECTION_NAME é o nome da sua associação de anfitriões do GitHub no Cloud Build.
    • REGION é a região do seu acionador.

    Se o campo installationState estiver definido como COMPLETE, significa que instalou a associação com êxito. Caso contrário, o campo installationState fornece um link para os passos adicionais necessários.

Associe a um anfitrião do GitHub através de programação

Terraform

Pode associar o seu anfitrião do GitHub ao Cloud Build através do fornecedor Google Terraform concluindo os seguintes passos:

  1. Instale a app GitHub do Cloud Build na sua conta do GitHub ou numa organização que lhe pertence.

  2. Crie uma chave de acesso pessoal.

    Certifique-se de que define o token para não ter data de validade e selecione as seguintes autorizações quando lhe for pedido no GitHub: repo e read:user. Se a sua app estiver instalada numa organização, certifique-se de que também seleciona a autorização read:org.

    Depois de gerar o token de acesso pessoal, guarde-o num local seguro. Vai usar o token gerado nos passos seguintes.

No exemplo seguinte, o fragmento do código faz o seguinte:

  • Configura o fornecedor Google do Terraform

  • Cria um segredo para armazenar tokens de acesso pessoal do GitHub para conceder autorizações ao agente de serviço do Cloud Build para aceder ao segredo

  • Cria uma associação ao 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]
    }
    

Onde:

  • PROJECT_NUMBER é o número do seu Google Cloud projeto.
  • SECRET_ID é o ID do seu token ou segredo no Secret Manager.
  • GITHUB_PAT é o ID da sua chave de acesso pessoal no GitHub.
  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • REGION é a região da sua ligação.
  • CONNECTION_NAME é um nome para a sua associação, tal como aparece no Cloud Build.
  • INSTALLATION_ID é o ID de instalação da sua app GitHub do Cloud Build. Pode encontrar o ID de instalação no URL da sua app GitHub do Cloud Build. No URL seguinte, https://github.com/settings/installations/1234567, o ID de instalação é o valor numérico 1234567.

gcloud

Para associar o seu anfitrião do GitHub através de um token e um ID de instalação existentes obtidos a partir de uma associação anterior, conclua os seguintes passos:

  1. Instale a app GitHub do Cloud Build na sua conta do GitHub ou numa organização que lhe pertence.

  2. Crie uma chave de acesso pessoal.

    Certifique-se de que define o token para não ter data de validade e selecione as seguintes autorizações quando lhe for pedido no GitHub: repo e read:user. Se a sua app estiver instalada numa organização, certifique-se de que também seleciona a autorização read:org.

    Depois de gerar o token de acesso pessoal, guarde-o num local seguro. Vai usar o token gerado nos passos seguintes.

  3. Armazene o seu token no Secret Manager no seu Google Cloud projeto executando o seguinte comando:

        echo -n TOKEN | gcloud secrets create SECRET_NAME --data-file=-
    

    Onde:

    • TOKEN é o seu token de acesso pessoal.
    • SECRET_NAME é o nome que quer dar ao seu segredo no Secret Manager.
  4. Conceda acesso ao agente do serviço do Cloud Build no segredo, onde SECRET_NAME é o nome do seu segredo, conforme 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"
    
  5. Crie a sua associação ao 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
    

    Onde:

    • CONNECTION_NAME é um nome da sua associação de anfitriões do GitHub no Cloud Build.
    • PROJECT_ID é o ID do seu Google Cloud projeto.
    • SECRET_NAME é o nome do seu segredo, tal como armazenado no Secret Manager.
    • INSTALLATION_ID é o ID de instalação da sua app GitHub. Pode encontrar o ID de instalação no URL da sua app GitHub do Cloud Build. No URL seguinte, https://github.com/settings/installations/1234567, o ID de instalação é o valor numérico 1234567.
    • REGION é a região da sua ligação.

Associe um repositório do GitHub

Consola

Para associar um repositório do GitHub a uma associação de anfitrião, conclua os seguintes passos:

  1. Abra a página Repositórios na Google Cloud consola.

    Abra a página Repositórios

    É apresentada a página Repositórios.

  2. Na parte superior da página, selecione o separador 2.ª geração.

  3. Clique em Associar repositórios para associar repositórios da sua associação.

    É apresentado o painel Associar repositórios.

  4. No painel Associar repositórios, introduza as seguintes informações:

    1. Associação: selecione uma associação no menu pendente.
    2. Repositório: selecione um repositório para associar à sua ligação.

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

      1. Gerado: selecione esta opção para que o Cloud Build gere automaticamente nomes de repositórios em seu nome para os repositórios selecionados.
      2. Manual: selecione esta opção para especificar manualmente os nomes dos repositórios selecionados.

        Se selecionar Manual, pode modificar os nomes dos repositórios selecionados na secção Nomes dos repositórios.

  5. Clique em Associar para associar o repositório à ligação.

gcloud

Para adicionar um repositório do GitHub à sua associação, introduza o seguinte comando:

   gcloud builds repositories create REPO_NAME \
     --remote-uri=REPO_URI \
     --connection=CONNECTION_NAME --region=REGION

Onde:

  • REPO_NAME é o nome do seu repositório.
  • REPO_URI é o link para o seu repositório do GitHub. Por exemplo, https://github.com/cloud-build/test-repo.git.
  • CONNECTION_NAME é o nome atribuído à ligação de anfitrião do GitHub Enterprise criada no Cloud Build a partir de Estabelecer ligação a um anfitrião do GitHub.
  • REGION é a região da sua ligação.

Terraform

Para adicionar um repositório GitHub à sua associação, adicione o seguinte fragmento 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"
  }

Onde:

  • PROJECT_ID é o ID do seu Google Cloud projeto.
  • REPO_NAME é o nome do seu repositório do GitHub.
  • REGION é a região da sua ligação.
  • URI é o URI do anfitrião do seu repositório. Por exemplo, https://github.com/myuser/myrepo.git.

O que se segue?