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.

Antes de comenzar

  • Habilita las API de Cloud Build and Secret Manager.

    Habilita las API

  • Asegúrate de tener la versión más reciente de GitHub Enterprise.
  • Asegúrate de tener acceso de administrador en los repositorios para los que deseas habilitar los activadores de GitHub Enterprise.
  • Asegúrate de mapear un dominio personalizado al host de GitHub Enterprise y de tener un certificado SSL válido para el host.

  • Crea una clave de API restringida a la API de Cloud Build.

  • Si tu servidor de GitHub Enterprise está alojado en un entorno local, completa los siguientes pasos:

  1. Habilita el Acceso privado a Google para los hosts locales a fin de asegurarte de que la instancia de GitHub Enterprise pueda acceder a los Servicios y las API de Google Cloud.

  2. Realiza un intercambio de tráfico entre tus redes locales y Google Cloud y configura una red de nube privada virtual (VPC). Para obtener más información, consulta Intercambio de tráfico entre redes de VPC.

  3. Usa grupos privados para ejecutar tus compilaciones. Si aún no lo hiciste, configura el entorno de tu proyecto y crea un nuevo grupo de trabajadores privados en tu VPC. Para obtener información sobre cómo ejecutar compilaciones mediante un grupo privado de trabajadores, consulta Ejecuta compilaciones en un grupo privado.

Permisos de IAM obligatorios

Para conectar tu host de GitHub Enterprise, necesitas la función de editor de Cloud Build (roles/cloudbuild.builds.editor) y el propietario de las 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.

Intercambio de tráfico entre una red de VPC

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, deberás intercambiar el tráfico de tu red local a Google Cloud y configurar una red de VPC. ,

  1. Habilita la API de Herramientas de redes de servicios.
  2. Crea una red de VPC nueva o selecciona una red de VPC existente. Nota: Debes configurar tu red de VPC para tener acceso a tu instancia de GitHub Enterprise de forma local.
  3. Asigna un rango de IP con nombre en la red de VPC. Para usar la red de VPC con grupos privados de Cloud Build, la longitud del prefijo debe ser /23 o menor, como /22, /21, etcétera.
  4. Establece una conexión de intercambio de tráfico entre redes 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 un DNS para tu instancia de GitHub Enterprise, deberás intercambiar tu zona de DNS con nuestro proveedor de servicios de forma manual. Para obtener más información, consulta Comparte zonas de DNS privado con productores de servicios.
  6. Si no deseas intercambiar tráfico en la red de tu proyecto de Cloud, puedes configurar una VPC compartida y hacer que tu proyecto de Cloud use esa red si el proyecto es parte de una organización. Necesitarás que la VPC compartida realice un intercambio de tráfico con la API de Herramientas de redes de servicios.

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. Luego de recibir 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 para los que quieras configurar los activadores de GitHub Enterprise.

En esta sección, se explica cómo puedes 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.

    Es posible que algunas versiones de GitHub Enterprise requieran 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 esté inhabilitado para SameSite.

      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 pedirá que crees una conexión de host para conectar tus 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, haga lo siguiente:

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

      Abrir la página Credenciales

    2. Haz clic en Crear credenciales.

    3. Haz clic en Clave de API.

      Verá una ventana emergente con la clave de API creada.

    4. Haz clic en Restringir clave.

    5. En API Restrictions, 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, la app se creará con la cuenta de usuario actual.

  8. [OPCIONAL] En la sección Certificado de CA, haz clic en Explorar para subir el certificado autofirmado. Tu certificado no debe exceder los 10 KB en tamaño y debe tener el formato PEM (.pem, .cer o .crt). Si esta sección se deja en blanco, se usará un conjunto predeterminado de certificados.

  9. En la sección Red, ingresa el nombre de tu proyecto de red y un nombre de red para tu red si tu GitHub Enterprise es opcional. instancia se aloja de forma local y intercambiaste tráfico con tu red con Google Cloud.

  10. Haz clic en Conectar host.

    Si tu instancia de GitHub Enterprise está 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 los repositorios a Cloud Build, haz clic en Conectar repositorios. De lo contrario, haz clic en Listo.

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

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

  14. Haz clic en Crear app de GitHub.

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

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

Conecta los repositorios de GitHub Enterprise

En esta sección, se explica cómo puedes 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 la conexión de host (Configuración de GitHub Enterprise).

  5. Haga clic en Continuar.

  6. Autoriza tu 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 cuenta de usuario o la organización de GitHub adecuada, y conectarla a un proyecto de Cloud Build, sigue estos pasos:

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

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

    Aquí:

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

    Una vez que la app esté instalada, toma nota del ID de instalación asociado con la app. Puedes encontrar el ID de instalación en la URL después de instalar la app.

  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"
    }
    

    Aquí:

    • installation-id es el ID de instalación de la app de GitHub. Nota: Este valor es un número entero y no requiere comillas.
    • project-id es el proyecto de Cloud asociado a 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 (opcional).
    • project-number es el número del proyecto de Cloud.
    • id es el ID de GitHubEnterpriseConfig.
  4. Ingresa el siguiente comando de curl en la 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 con 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

Para obtener información sobre cómo crear activadores con los activadores de GitHub, consulta Crea activadores de GitHub.

API

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

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

Aquí:

  • 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.

Ingresa el siguiente comando de curl en la 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

En esta sección, se explica cómo puedes compilar un grupo privado en una instancia de GitHub Enterprise mediante activadores de GitHub Enterprise.

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

  1. Habilita el Acceso privado a Google para los hosts locales a fin de asegurarte de que tu instancia de GitHub Enterprise pueda acceder a los Servicios y las API de Google Cloud.

  2. Realiza un intercambio de tráfico entre tu red local y Google Cloud y configura una red de nube privada virtual (VPC). Para obtener más información, consulta Intercambio de tráfico entre redes de VPC.

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

El activador de GitHub Enterprise invocará compilaciones de forma automática en la instancia de GitHub Enterprise según la configuración.

Próximos pasos