Compilar repositorios de GitHub Enterprise

Cloud Build te permite crear activadores en una instancia de GitHub Enterprise. En esta página, se explica cómo puedes usar los activadores de GitHub Enterprise para invocar compilaciones en respuesta a confirmaciones o solicitudes de extracción desde una instancia de GitHub Enterprise y cómo se pueden compilar repositorios desde GitHub Enterprise si la instancia está alojada en un entorno local.

Antes de comenzar

  • Habilita las API de Cloud Build and Secret Manager.

    Habilita las API

Permisos de IAM obligatorios

Para conectar tu host de GitHub Enterprise, otorga la función de editor de Cloud Build (roles/cloudbuild.builds.editor) y la función de propietario de integraciones de Cloud Build (cloudbuild.integrations.owner) a tu cuenta de usuario.

Para agregar las funciones necesarias a tu cuenta de usuario, consulta Configura el acceso a los recursos de Cloud Build. Para obtener más información sobre las funciones de IAM asociadas con Cloud Build, consulta Funciones y permisos de IAM.

Crea una aplicación de GitHub de Cloud Build

Deberás crear una aplicación de GitHub en tu instancia de GitHub Enterprise. La app enviará eventos de webhook a un extremo de Cloud Build. Cuando se reciben estos eventos, Cloud Build validará la carga útil y ejecutará una compilación si el evento corresponde a un activador de GitHub de Cloud Build. Deberás instalar la app en los repositorios en los que quieras configurar los activadores de GitHub Enterprise.

En esta sección, se explica cómo crear una app de GitHub:

  1. Accede a tu instancia de GitHub Enterprise.
  2. Asegúrate de tener instalada la versión más reciente de GitHub Enterprise.

    Algunas versiones de GitHub Enterprise pueden requerir que se inhabiliten las cookies de SameSite para completar los siguientes pasos en un navegador Chrome. Si tienes una versión de GitHub Enterprise anterior a la versión 2.21.3, deberás inhabilitar las cookies de SameSite:

    1. Ve a chrome://flags/.
    2. Escribe samesite en la barra de filtros.
    3. Asegúrate de que las cookies predeterminadas de SameSite estén inhabilitadas.

      Captura de pantalla de SameSite inhabilitada

    4. Reinicia el navegador.

  3. Abre la página Administrar repositorios de Cloud Build:

    Abrir la página Administrar repositorios

  4. Haz clic en Conectar host.

    Verás el panel Conectar host, que te solicita que crees una conexión de host para conectar los repositorios de GitHub Enterprise a Cloud Build.

  5. En la sección URL del host, ingresa la URL de tu instancia de GitHub Enterprise. Por ejemplo, ghe.example.com.

  6. En la sección Clave de API, haz clic en Generar para generar una clave de API o ingresa una clave de API si ya tienes una.

    Si deseas crear una clave de API de forma manual, completa el siguiente paso:

    Para obtener una clave de API, haz lo siguiente:

    1. Abre la página Credenciales en Cloud Console:

      Abre la página Credenciales.

    2. Haz clic en Crear credenciales.

    3. Haz clic en Clave de API.

      Verás un cuadro emergente con la clave de API creada.

    4. Haz clic en Restringir clave.

    5. En API Constraints, selecciona Cloud Build API en el menú desplegable.

    6. Haz clic en Guardar.

  7. En la sección Organización, ingresa la organización para la que se creará la app de GitHub (OPCIONAL). Si esta sección se deja en blanco, se creará la app en la cuenta de usuario actual.

  8. En la sección CA Certificate, haz clic en Browse para subir tu certificado autofirmado (opcional). El certificado no debe superar los 10 KB y debe estar en formato PEM (.pem, .cer o .crt). Si esta sección se deja en blanco, se utilizará un conjunto predeterminado de certificados.

  9. [OPCIONAL] En la sección Red, ingresa el nombre de tu Proyecto de red y un Nombre de red si la instancia de GitHub Enterprise está alojada de forma local y cambiaste la red con Google Cloud.

  10. Haz clic en Conectar host.

    Si tu instancia de GitHub Enterprise se encuentra en una red con intercambio de tráfico, el proceso de conexión del host puede tardar varios minutos en completarse.

  11. Si deseas conectar tus repositorios a Cloud Build, haz clic en Conectar repositorios. De lo contrario, haga clic en Listo.

  12. Después de que conectes tu host, aparecerá un cuadro emergente en el que se te solicitará que ingreses el nombre de tu app de GitHub Enterprise. Antes de ingresar el nombre de la app, es posible que se te solicite acceder. Si usas Google Chrome como navegador, es posible que la página emergente te solicite ingresar información sobre la app de GitHub Enterprise de forma manual.

  13. Después de acceder, ingresa un nombre para tu app de GitHub.

  14. Haga clic en Crear aplicación de GitHub.

    Acabas de crear una app de GitHub en tu instancia de GitHub Enterprise. Cloud Build almacenará de forma automática tus credenciales en Secret Manager y conectará el host a tu proyecto de Cloud. En la API, esta conexión se representa como un recurso de GitHubEnterpriseConfig o como una asociación entre Cloud Build y tu servidor de GitHub Enterprise.

    El host se conectó correctamente. Puedes hacer clic en Conectar repositorios si deseas conectar repositorios a Cloud Build.

Conecta tus repositorios de GitHub Enterprise

En esta sección, se explica cómo asignar tu proyecto de Cloud a la app de GitHub que creaste en la sección anterior.

Console

  1. Abre la página Activadores en Google Cloud Console.

    Abrir la página Activadores

  2. Haz clic en Conectar repositorio.

  3. En Seleccionar fuente, haz clic en GitHub Enterprise.

  4. En el menú desplegable, selecciona Conexión de host (GitHub Enterprise Config).

  5. Haga clic en Continuar.

  6. Autorice su aplicación.

  7. En Seleccionar repositorio, selecciona tu cuenta de GitHub y Repositorio en el menú desplegable.

API

Para instalar la app de GitHub en la organización o cuenta de usuario de GitHub adecuada, y conectarla a un proyecto de Cloud Build, haz lo siguiente:

  1. Navega a la URL asociada a la app de GitHub que creaste en la sección anterior:

       https://host-url/organizations/org-name/settings/apps/app-name/
    

    Donde:

    • host-url es la URL del host de tu instancia de GitHub Enterprise.
    • org-name es el nombre de la organización en la que creaste tu proyecto.
    • app-name es el nombre de tu app de GitHub.
  2. Instala la app en tu organización o cuenta de usuario a través de la URL.

    Una vez instalada la app, anota el ID de instalación asociado a ella. El ID de instalación se puede encontrar en la URL después de instalarla.

  3. Crea un archivo JSON con el siguiente contenido:

    {
     "Id": installation-id,
     "project_id": "project-id",
     "repository_setting_list": {
            "repository_settings": {
            "owner": "owner",
            "name": "repo-name",
          },
          "repository_settings": {
            "owner": "owner",
            "name": "repo-name-additional"
          },
         …
     },
        "enterprise_config_resource_name": "projects/project-number/githubEnterpriseConfigs/id"
    }
    

    Donde:

    • installation-id es el ID de instalación de la app de GitHub. Este valor es un número entero y no requiere comillas.
    • project-id es el proyecto de Cloud asociado con la instalación.
    • owner es el propietario del repositorio de GitHub.
    • repo-name es el nombre del repositorio de GitHub.
    • repo-name-additional es el nombre de un repositorio adicional de GitHub.
    • project-number es el número del proyecto de Cloud.
    • id es el ID de conexión de host que se obtuvo de la pestaña Conexiones de host en la página Administrar repositorios.
  4. Ingresa el siguiente comando de curl en tu terminal, en el que project-id es el ID del proyecto de Cloud:

     curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/${PROJECT_ID}/installations -d @installation.json
    

Los repositorios asociados con tu instalación ahora se pueden ver en la página Activadores, en la pestaña Inactivo.

Crea un activador de GitHub para la instalación de GitHub Enterprise

En esta sección, se explica cómo puedes crear un activador y vincularlo a la instalación de GitHub Enterprise. Si deseas usar activadores de GitHub Enterprise en un entorno local, consulta Compila repositorios en un entorno local desde GitHub Enterprise para obtener más instrucciones.

Console

Si quieres aprender a crear activadores con los activadores de GitHub, consulta Crea activadores de GitHub.

API

En la siguiente plantilla JSON, se muestra cómo crear activadores a través de la línea de comandos:

  {
      "filename": "cloudbuild.yaml",
      "name": "trigger-name",
      "description": "trigger-description",
      "github": {
          "push": {
              "branch": ".*",
          },
          "owner": "owner",
          "name": "repo-name",
      "enterprise_config_resource_name": "projects/project-number/githubEnterpriseConfigs/id"
      },
      "include_build_logs": "INCLUDE_BUILD_LOGS_WITH_STATUS"
  }

Donde:

  • trigger-name es el nombre del activador.
  • trigger-description es la descripción del activador.
  • owner es el propietario del repositorio de GitHub.
  • repo-name es el nombre del repositorio de GitHub.
  • project-number es el número del proyecto de Cloud.
  • id es el ID de tu GitHubEnterpriseConfig.
  • _include_build_logs es un campo que puedes especificar para mostrar los registros de compilación de tus repositorios. Esta marca es compatible con las compilaciones de GitHub y los repositorios de GitHub Enterprise.

Ingresa el siguiente comando de curl en tu terminal, en el que project-id es el ID del proyecto de Cloud:

  curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" https://cloudbuild.googleapis.com/v1/projects/project-id/triggers -d @trigger.json

Ya se creó tu activador.

Compila repositorios en un entorno local desde GitHub Enterprise

Si tu instancia de GitHub Enterprise está alojada en un entorno local y no se puede acceder a ella a través de una conexión a Internet pública, debes crear una conexión privada entre tu red de VPC y la red del productor de servicios. También necesitas un grupo privado para compilar en un entorno local.

Si deseas crear un activador de GitHub Enterprise para compilar en tu entorno local, sigue estos pasos:

  1. Para crear una conexión privada entre tu red de VPC y la red del productor de servicios, completa los siguientes pasos:

    1. Habilita la AAPI de Service Networking.
    2. Crea una red de VPC nueva o selecciona una red de VPC existente.

    3. Asigna un rango de IP con nombre en la red de VPC. Para usar la red de VPC con Cloud Build, la longitud del prefijo debe ser /23 o inferior, como /22, /21, etcétera.

    4. Establecer una conexión privada de red de VPC entre tu red de VPC y Google Cloud Para obtener más información, consulta Crea una conexión privada.

    5. Si configuraste el DNS para tu instancia de GitHub Enterprise, deberás intercambiar la zona de DNS de forma manual con nuestro proveedor de servicios. Para obtener más información, consulta Comparte zonas de DNS privadas con productores de servicios.

    6. [OPCIONAL] Si no quieres crear una conexión privada desde tu proyecto de Cloud, puedes configurar una VPC compartida y hacer que el proyecto de Cloud use esa red si el proyecto forma parte de una organización. Aún necesitará la VPC compartida para intercambiar tráfico con la API de Service Networking.

  2. Usa grupos privados para ejecutar tus compilaciones. Si no creaste un grupo privado, consulta Crea un grupo privado nuevo.

  3. Crea un activador de GitHub Enterprise para compilar repositorios alojados en una instancia de GitHub Enterprise.

El activador de GitHub Enterprise ahora invocará automáticamente las compilaciones en tu instancia de GitHub Enterprise según tu configuración. Para aprender a ejecutar compilaciones con un grupo privado de trabajadores, consulta Cómo ejecutar compilaciones en un grupo privado.

Próximos pasos