Conectarse a un repositorio de GitHub

En esta página se explica cómo conectar un repositorio de GitHub a Cloud Build. Para obtener más información sobre los repositorios de Cloud Build, consulta Repositorios de Cloud Build.

Antes de empezar

  • Enable the Cloud Build and Secret Manager APIs.

    Enable the APIs

  • Tener el código fuente listo en un repositorio de GitHub.
  • Tener un Dockerfile o un archivo de configuración de Cloud Build en tu repositorio de origen de GitHub.
  • Si vas a conectar tu repositorio a Cloud Build por primera vez, asegúrate de que tienes permisos de administrador en él. Para obtener más información sobre los permisos de los repositorios de GitHub, consulta Niveles de permisos de repositorio para una organización.
  • Para usar los comandos gcloud de esta página, instala Google Cloud CLI.

Conectarse a un host de GitHub

Consola

Para conectar tu repositorio de GitHub a Cloud Build, sigue estos pasos:

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

    Verás la página Repositorios.

  2. En el selector de proyectos de la barra superior, selecciona tu Google Cloud proyecto.

  3. En la parte superior de la página, selecciona la pestaña 2.ª gen..

  4. Haz clic en Crear conexión de host para conectar un host nuevo a Cloud Build.

  5. En el panel de la izquierda, selecciona GitHub como proveedor de la fuente.

  6. En la sección Configurar conexión, introduce la siguiente información:

    1. Región: selecciona una región para tu conexión.

    2. Nombre: introduce un nombre para la conexión.

  7. Haz clic en Connect (Conectar).

    Después de hacer clic en el botón Conectar, se te pedirá que autorices a la aplicación de GitHub para Cloud Build a acceder a tu cuenta de GitHub. Puedes revocar el acceso a la aplicación desinstalándola o eliminándola de tu anfitrión en cualquier momento.

    Cloud Build solicita la autorización de tu cuenta de usuario de GitHub y almacena el token de autorización resultante como un secreto en Secret Manager en tu proyecto. El token de autorización se usa para validar el acceso de tu cuenta de usuario a la instalación de la aplicación GitHub para Cloud Build y a los repositorios vinculados. La cuenta de agente de servicio de Cloud Build (service-{projectNumber}@gcp-sa-cloudbuild.iam.gserviceaccount.com) se usa para acceder a tu secreto. Para ver tu secreto, consulta Mostrar secretos y ver detalles de secretos.

    Después de autorizar la aplicación GitHub para Cloud Build, se te redirigirá a la página Repositorios de Cloud Build.

gcloud

Para conectar tu host de GitHub mediante gcloud, sigue estos pasos:

  1. Introduce el siguiente comando para iniciar una conexión con tu repositorio de GitHub:

     gcloud builds connections create github CONNECTION_NAME --region=REGION
    

    Donde:

    • CONNECTION_NAME es el nombre de tu conexión tal como aparecerá en Cloud Build.
    • REGION es la región de tu activador.

    Después de ejecutar el comando gcloud builds connections, verás un enlace para autorizar la aplicación de GitHub para Cloud Build.

  2. Inicia sesión en tu cuenta de github.com.

  3. Sigue el enlace para autorizar la aplicación de GitHub para Cloud Build.

    Después de autorizar la aplicación, Cloud Build almacena un token de autenticación como secreto en Secret Manager en tu proyecto de Google Cloud. Puedes ver tus secretos en la página Secret Manager.

  4. Instala la aplicación de GitHub para Cloud Build en tu cuenta o en una organización de tu propiedad.

    Permite la instalación con tu cuenta de GitHub y selecciona los permisos del repositorio cuando se te pida.

  5. Para verificar la instalación de tu conexión de GitHub, ejecuta el siguiente comando:

     gcloud builds connections describe CONNECTION_NAME --region=REGION
    

    Donde:

    • CONNECTION_NAME es el nombre de tu conexión de host de GitHub en Cloud Build.
    • REGION es la región de tu activador.

    Si el campo installationState tiene el valor COMPLETE, significa que has instalado la conexión correctamente. De lo contrario, en el campo installationState se proporciona un enlace con los pasos adicionales que debes seguir.

Conectarse a un host de GitHub mediante programación

Terraform

Para conectar tu host de GitHub a Cloud Build mediante el proveedor de Google para Terraform, sigue estos pasos:

  1. Instala la aplicación de GitHub de Cloud Build en tu cuenta de GitHub o en una organización de tu propiedad.

  2. Crea un token de acceso personal.

    Asegúrate de que tu token no tenga fecha de vencimiento y selecciona los siguientes permisos cuando se te pida en GitHub: repo y read:user. Si tu aplicación está instalada en una organización, asegúrate de seleccionar también el permiso read:org.

    Después de generar tu token de acceso personal, guárdalo en un lugar seguro. Usarás el token generado en los pasos siguientes.

En el siguiente ejemplo, el fragmento de código hace lo siguiente:

  • Configura el proveedor de Google de Terraform.

  • Crea un secreto para almacenar tokens de acceso personal de GitHub y conceder permisos al agente de servicio de Cloud Build para acceder al secreto.

  • Crea una conexión de 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]
    }
    

Donde:

  • PROJECT_NUMBER es el número de tu proyecto Google Cloud .
  • SECRET_ID es el ID de tu token o secreto en Secret Manager.
  • GITHUB_PAT es el ID de tu token de acceso personal en GitHub.
  • PROJECT_ID es el ID de tu proyecto Google Cloud .
  • REGION es la región de tu conexión.
  • CONNECTION_NAME es el nombre de tu conexión tal como aparecerá en Cloud Build.
  • INSTALLATION_ID es el ID de instalación de tu aplicación de GitHub para Cloud Build. Puedes encontrarlo en la URL de tu aplicación de GitHub para Cloud Build. En la siguiente URL, https://github.com/settings/installations/1234567, el ID de instalación es el valor numérico 1234567.

gcloud

Para conectar tu host de GitHub con un token y un ID de instalación que hayas obtenido en una conexión anterior, sigue estos pasos:

  1. Instala la aplicación de GitHub de Cloud Build en tu cuenta de GitHub o en una organización de tu propiedad.

  2. Crea un token de acceso personal.

    Asegúrate de que tu token no tenga fecha de vencimiento y selecciona los siguientes permisos cuando se te pida en GitHub: repo y read:user. Si tu aplicación está instalada en una organización, asegúrate de seleccionar también el permiso read:org.

    Después de generar tu token de acceso personal, guárdalo en un lugar seguro. Usarás el token generado en los pasos siguientes.

  3. Almacena tu token en Secret Manager en tu Google Cloud proyecto ejecutando el siguiente comando:

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

    Donde:

    • TOKEN es tu token de acceso personal.
    • SECRET_NAME es el nombre que quieres dar al secreto en Secret Manager.
  4. Concede acceso al agente de servicio de Cloud Build al secreto, donde SECRET_NAME es el nombre del secreto tal como se almacena en 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. Crea tu conexión de 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
    

    Donde:

    • CONNECTION_NAME es el nombre de tu conexión de host de GitHub en Cloud Build.
    • PROJECT_ID es el ID de tu proyecto Google Cloud .
    • SECRET_NAME es el nombre de tu secreto tal como se almacena en Secret Manager.
    • INSTALLATION_ID es el ID de instalación de tu aplicación de GitHub. Puedes encontrarlo en la URL de tu aplicación de GitHub para Cloud Build. En la siguiente URL, https://github.com/settings/installations/1234567, el ID de instalación es el valor numérico 1234567.
    • REGION es la región de tu conexión.

Conectar un repositorio de GitHub

Consola

Para conectar un repositorio de GitHub a una conexión de host, sigue estos pasos:

  1. Abre la página Repositorios en la consola de Google Cloud .

    Abre la página Repositorios.

    Verás la página Repositorios.

  2. En la parte superior de la página, selecciona la pestaña 2.ª gen..

  3. Haz clic en Vincular repositorios para vincular repositorios de tu conexión.

    Verá el panel Conectar repositorios.

  4. En el panel Connect Repositories (Conectar repositorios), introduce la siguiente información:

    1. Conexión: selecciona una conexión en el menú desplegable.
    2. Repositorio: selecciona un repositorio para vincularlo a tu conexión.

    3. Nombre del repositorio: introduce un nombre para el repositorio.

      1. Generado: selecciona esta opción para que Cloud Build genere automáticamente nombres de repositorio en tu nombre para los repositorios seleccionados.
      2. Manual: selecciona esta opción para especificar manualmente los nombres de los repositorios seleccionados.

        Si seleccionas Manual, puedes modificar los nombres de los repositorios seleccionados en la sección Nombres de los repositorios.

  5. Haz clic en Vincular para vincular tu repositorio a tu conexión.

gcloud

Para añadir un repositorio de GitHub a tu conexión, introduce el siguiente comando:

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

Donde:

  • REPO_NAME es el nombre de tu repositorio.
  • REPO_URI es el enlace a tu repositorio de GitHub. Por ejemplo, https://github.com/cloud-build/test-repo.git.
  • CONNECTION_NAME es el nombre que se le ha dado a la conexión de host de GitHub Enterprise creada en Cloud Build desde Conectar con un host de GitHub.
  • REGION es la región de tu conexión.

Terraform

Para añadir un repositorio de GitHub a tu conexión, añade el siguiente fragmento de código a tu configuración de 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"
  }

Donde:

  • PROJECT_ID es el ID de tu proyecto Google Cloud .
  • REPO_NAME es el nombre de tu repositorio de GitHub.
  • REGION es la región de tu conexión.
  • URI es el URI del host de tu repositorio. Por ejemplo, https://github.com/myuser/myrepo.git.

Siguientes pasos