Skip to main content

Habilitación de Acciones de GitHub con Google Cloud Storage

Puedes habilitar GitHub Actions en GitHub Enterprise Server y utilizar Google Cloud Storage para almacenar los datos que generan las ejecuciones de flujos de trabajo.

¿Quién puede utilizar esta característica?

Site administrators can enable GitHub Actions and configure enterprise settings.

Nota: La compatibilidad de GitHub Actions con Google Cloud Storage se encuentra actualmente en versión beta y está sujeta a cambios.

Acerca del almacenamiento externo de GitHub Actions

GitHub Actions usa el almacenamiento de blobs externo para almacenar los datos generados por las ejecuciones de flujo de trabajo. Los datos almacenados incluyen registros de flujo de trabajo, cachés, y artefactos de compilación cargados por el usuario. Para más información, consulta "Iniciar con GitHub Actions para GitHub Enterprise Server".

Hay dos opciones para configurar GitHub Enterprise Server para conectarse al proveedor de almacenamiento externo:

  • OpenID Connect (OIDC)
  • Autenticación tradicional basada en credenciales mediante secretos

Se recomienda usar OIDC siempre que sea posible, ya que no necesitarás crear ni administrar secretos de credenciales confidenciales y de larga duración para el proveedor de almacenamiento y no correrás el riesgo de exponerlos. Después de definir una confianza con OIDC, el proveedor de almacenamiento en la nube emite automáticamente tokens de acceso de corta duración a tu instancia de GitHub Enterprise Server, que expiran automáticamente.

Requisitos previos

Antes de que habilites las GitHub Actions, asegúrate de que has completado los siguientes pasos:

  • Crea tu cubo de Google Cloud Storage para almacenar los datos que generan las ejecuciones de flujos de trabajo.

  • Revisa los requisitos de hardware de las GitHub Actions. Para obtener más información, vea «Iniciar con GitHub Actions para GitHub Enterprise Server».

  • Se debe configurar el TLS para el dominio de tu instancia de GitHub Enterprise Server. Para obtener más información, vea «Configurar TLS».

    Nota: Te recomendamos ampliamente que configures el TLS en GitHub Enterprise Server con un certificado que firme una autoridad confiable. Aunque un certificado auto-firmado podría funcionar, se requeriría una configuración adicional para tus ejecutores auto-hospedados y esto no se recomienda para los ambientes productivos.

  • Si tienes un servidor proxy HTTP configurado en tu instancia de GitHub Enterprise Server:

  • Debe agregar .localhost, 127.0.0.1 y ::1 a la lista de exclusión de proxy HTTP (en ese orden).

  • Si la ubicación del almacenamiento externo no es enrutable, también debes agregar la dirección URL del almacenamiento externo a la lista de exclusión.

Para más información sobre cómo cambiar la configuración del proxy, consulta "Configuración de un servidor proxy web de salida".

  • Si usas OIDC para la conexión al proveedor de almacenamiento, debes exponer las siguientes direcciones URL de servicio de token de OIDC en tu instancia de GitHub Enterprise Server en la red pública de Internet:

    https://HOSTNAME/_services/token/.well-known/openid-configuration
    https://HOSTNAME/_services/token/.well-known/jwks
    

    Esto garantiza que el proveedor de almacenamiento pueda ponerse en contacto con tu instancia de GitHub Enterprise Server para la autenticación.

Habilitación de GitHub Actions con Google Cloud Storage mediante OIDC (recomendado)

Para configurar GitHub Enterprise Server con el fin de usar OIDC con Google Cloud Storage, primero debes crear una cuenta de servicio de Google Cloud. Después, crea un grupo de identidades y un proveedor de identidades de Google Cloud. Por último, configura GitHub Enterprise Server para usar el proveedor y la cuenta de servicio para acceder al cubo de Google Cloud Storage.

1. Creación de una cuenta de servicio

  1. Crea una cuenta de servicio que pueda acceder al cubo mediante OIDC. Para obtener más información, vea Crear y administrar cuentas de servicio en la documentación de Google Cloud.

    Al crear la cuenta de servicio, asegúrate de hacer lo siguiente:

  2. Después de crear la cuenta de servicio, anota su dirección de correo electrónico, ya que la necesitarás más adelante. La dirección de correo electrónico de la cuenta de servicio tiene el formato SERVICE-ACCOUNT-NAME@PROJECT-NAME.iam.gserviceaccount.com.

2. Creación de un grupo de identidades y un proveedor de identidades

  1. En la consola de Google Cloud, ve a la página Nuevo proveedor y grupo de cargas de trabajo.

  2. En "Crear un grupo de identidades", escribe un nombre para el grupo de identidades y haz clic en Continuar.

  3. En "Agregar un proveedor al grupo":

    • En "Seleccionar un proveedor", selecciona OpenID Connect (OIDC) .

    • En "Nombre de proveedor", escribe un nombre para el proveedor.

    • En "Emisor (URL)", escribe la siguiente dirección URL y reemplaza HOSTNAME por el nombre de host público de tu instancia de GitHub Enterprise Server:

      https://HOSTNAME/_services/token
      

      Por ejemplo:

      https://my-ghes-host.example.com/_services/token
      
    • En "Audiencias", deja seleccionada la audiencia predeterminada, pero anota la dirección URL del proveedor de identidades, ya que la necesitarás más adelante. La dirección URL del proveedor de identidades tiene el formato https://iam.googleapis.com/projects/PROJECT-NUMBER/locations/global/workloadIdentityPools/POOL-NAME/providers/PROVIDER-NAME.

    • Haga clic en Continuar.

  4. En "Configurar atributos del proveedor":

    • Para la asignación de "OIDC 1", escribe assertion.sub.

    • En "Condiciones de atributo", haz clic en Agregar condición.

    • En "CEL de condición", escribe la condición siguiente y reemplaza HOSTNAME por el nombre de host público de tu instancia de GitHub Enterprise Server:

      google.subject == "HOSTNAME"
      

      Por ejemplo:

      google.subject == "my-ghes-host.example.com"
      

      Nota: El nombre de host de tu instancia de GitHub Enterprise Server que se usa aquí no debe incluir el protocolo.

    • Haga clic en Save(Guardar).

  5. Después de crear el grupo de identidades, en la parte superior de la página del grupo de identidades, haz clic en Conceder acceso.

    • En "Seleccionar cuenta de servicio", selecciona la cuenta de servicio que creaste en el procedimiento anterior.
    • En "Seleccionar entidades de seguridad (identidades que pueden acceder a la cuenta de servicio)", selecciona Solo identidades que coincidan con el filtro.
    • En "Nombre de atributo", selecciona subject.
    • En "Valor de atributo", escribe el nombre de host de GitHub Enterprise Server, sin el protocolo. Por ejemplo, my-ghes-host.example.com.
    • Haga clic en Guardar.
    • Puedes descartar el cuadro de diálogo "Configurar la aplicación", ya que el archivo de configuración no es necesario.

3. Configuración de GitHub Enterprise Server para conectarse a Google Cloud Storage mediante OIDC

  1. Desde una cuenta administrativa de GitHub Enterprise Server, en la esquina superior derecha de cualquier página, haga clic en .

  2. Si todavía no está en la página "Administrador del sitio", en la esquina superior izquierda, haga clic en Administrador del sitio.

  3. En la barra lateral " Administrador del sitio", haz clic en Consola de administración .

  4. En la barra lateral "Configuración", haga clic en Acciones.

  5. En "GitHub Actions", seleccione Habilitar Acciones de GitHub.

  6. En "Almacenamiento de artefactos y registros", junto a "Google Cloud Storage", haz clic en Configuración.

  7. En "Autenticación", selecciona OpenID Connect (OIDC) y escribe los valores del almacenamiento:

    • URL del servicio: la dirección URL del servicio del cubo. Normalmente es https://storage.googleapis.com.

    • Nombre del cubo: nombre de tu cubo.

    • Id. del proveedor de identidades de carga de trabajo: identificador del proveedor de identidades del grupo de identidades.

      Esto tiene el formato projects/PROJECT-NUMBER/locations/global/workloadIdentityPools/POOL-NAME/providers/PROVIDER-NAME. Ten en cuenta que debes quitar el prefijo https://iam.googleapis.com/ del valor indicado en el procedimiento anterior.

      Por ejemplo, projects/1234567890/locations/global/workloadIdentityPools/my-pool/providers/my-provider.

    • Cuenta de servicio: dirección de correo electrónico de la cuenta de servicio que anotaste en el procedimiento anterior. Por ejemplo, ghes-oidc-service-account@my-project.iam.gserviceaccount.com.

  8. Haz clic en el botón Probar configuración de almacenamiento para validar la configuración de almacenamiento.

    Si hay algún error al validar la configuración de almacenamiento, comprueba la configuración con el proveedor de almacenamiento e inténtalo de nuevo.

  9. En la barra lateral "Configuración" , haga clic en Guardar configuración.

    Nota: Al guardar la configuración en la Consola de administración se restablecen los servicios de sistema, lo que podría generar un tiempo de inactividad visible para el usuario.

  10. Espera que se complete la fase de configuración.

Habilitación de GitHub Actions con Google Cloud Storage mediante una clave HMAC

  1. Crea una cuenta de servicio de Google Cloud que pueda acceder al cubo y una clave de código de autenticación de mensajes (HMAC) basada en hash para la cuenta de servicio. Para obtener más información, consulta "Administración de claves HMAC para las cuentas de servicio" en la documentación de Google Cloud.

    La cuenta de servicio debe tener los siguientes permisos de Administración de identidad y acceso (IAM) para el cubo:

    • storage.objects.create
    • storage.objects.get
    • storage.objects.list
    • storage.objects.update
    • storage.objects.delete
    • storage.multipartUploads.create
    • storage.multipartUploads.abort
    • storage.multipartUploads.listParts
    • storage.multipartUploads.list 1. Desde una cuenta administrativa de GitHub Enterprise Server, en la esquina superior derecha de cualquier página, haga clic en .
  2. Si todavía no está en la página "Administrador del sitio", en la esquina superior izquierda, haga clic en Administrador del sitio.

  3. En la barra lateral " Administrador del sitio", haz clic en Consola de administración .

  4. En la barra lateral "Configuración", haga clic en Acciones.

  5. En "GitHub Actions", seleccione Habilitar Acciones de GitHub.

  6. En "Almacenamiento de artefactos y registros", junto a "Google Cloud Storage", haz clic en Configuración.

  7. En "Autenticación", selecciona Basado en credenciales y escribe los detalles del cubo de almacenamiento:

    • URL del servicio: la dirección URL del servicio del cubo. Normalmente es https://storage.googleapis.com.
    • Nombre del cubo: el nombre del cubo.
    • Id. de acceso de HMAC y Secreto de HMAC: el id. de acceso y el secreto de Google Cloud para la cuenta de almacenamiento. Para obtener más información, consulta "Administración de claves HMAC para las cuentas de servicio" en la documentación de Google Cloud.
  8. Haz clic en el botón Probar configuración de almacenamiento para validar la configuración de almacenamiento.

    Si hay algún error al validar la configuración de almacenamiento, comprueba la configuración con el proveedor de almacenamiento e inténtalo de nuevo.

  9. En la barra lateral "Configuración" , haga clic en Guardar configuración.

    Nota: Al guardar la configuración en la Consola de administración se restablecen los servicios de sistema, lo que podría generar un tiempo de inactividad visible para el usuario.

  10. Espera que se complete la fase de configuración.

Pasos siguientes

Después de que la ejecución de configuración se haya completado correctamente, GitHub Actions se habilitará en tu instancia de GitHub Enterprise Server. Para los próximos pasos, como administrar los permisos de acceso a GitHub Actions y agregar ejecutores autohospedados, vuelve a "Iniciar con GitHub Actions para GitHub Enterprise Server".