La automatización en GitHub normalmente implica que varios componentes funcionen juntos. Los componentes nativos de GitHub son los siguientes:
- GitHub Actions flujos de trabajo, que proporcionan un tiempo de ejecución para ejecutar la lógica de automatización. De fábrica, funcionan dentro de un único repositorio, pero se pueden ampliar para automatizar entre repositorios o incluso fuera de ellos.
- GitHub Apps, que no tienen un tiempo de ejecución. En su lugar, proporcionan identidad, permisos y entrega de eventos para que las automatizaciones, ya sean servicios externos o flujos de trabajo, puedan autenticarse y actuar de forma segura.
La mayoría de la automatización empresarial usa GitHub Apps y GitHub Actions junto. Por ejemplo, un flujo de trabajo que se ejecuta en GitHub Actions puede usar un GitHub App para obtener un token de corta duración que le permita realizar tareas en repositorios u organizaciones.
En esta guía se explica cómo GitHub Apps, automatizaciones externas y GitHub Actions se complementan entre sí y cuándo utilizar cada uno en su organización.
GitHub Apps
Un GitHub App proporciona la identidad, permisos y eventos de webhook necesarios para la automatización en o entre repositorios, organizaciones o tu empresa. GitHub Apps no ejecutan lógica por sí mismos, sino que permiten que otros sistemas la ejecuten.
GitHub Apps apoyan la automatización empresarial ofreciendo:
- Permisos granulares para seguir los principios de privilegios mínimos
- Instalaciones delimitadas en el nivel de empresa, organización o repositorio
- Tokens de corta duración para el acceso seguro
- Identidades distintas con plena auditabilidad
- Administración delegada mediante el rol de administrador GitHub App
- Coherencia a escala cuando pertenece a una cuenta empresarial
¿Qué permiten GitHub Apps ?
GitHub Apps permiten que las automatizaciones que escriba en otro lugar (como servicios externos o pasos de flujo de trabajo) actúen en las API de GitHub dentro de los permisos que concede. Por ejemplo:
- Recepción de eventos de webhook y activación de servicios externos
- Habilitación de un flujo de trabajo para actuar fuera de su ámbito de repositorio predeterminado
- Integración de GitHub con sistemas de terceros
- Coordinación de cambios en muchos repositorios
- Ejecución de bots o servicios de ejecución prolongada que supervisan la actividad a nivel empresarial
Nota:
Las aplicaciones de GitHub instaladas en la empresa no pueden llamar a todos los endpoints de API. Consulta Instalación de una aplicación de GitHub en tu empresa.
GitHub Actions
GitHub Actions proporcionan el tiempo de ejecución integrado de GitHub para ejecutar lógica de automatización dentro de repositorios. Los flujos de trabajo se ejecutan en ejecutores hospedados o autohospedados y son ideales para tareas vinculadas a cambios de código o eventos de repositorio.
Utilice GitHub Actions para:
- CI/CD (compilación, prueba, implementación)
- Comprobaciones y validaciones de pull requests
- Tareas de mantenimiento de nivel de repositorio
- Flujos de trabajo controlados por eventos que responden a inserciones, etiquetas o actualizaciones de problemas
- Trabajos programados con cron
Cómo GitHub Actions usa GitHub Apps
GitHub Actions y GitHub Apps están profundamente conectados:
- Los permisos de flujo de trabajo se asignan directamente a los permisos de GitHub App.
- Los flujos de trabajo se pueden autenticar como un GitHub App mediante
actions/create-github-app-token. - GitHub Apps puede desencadenar flujos de trabajo a través de eventos como
repository_dispatch.
Automatizaciones y servicios externos
Las automatizaciones externas se llevan a cabo fuera de GitHub en su propia infraestructura. Normalmente, estos servicios:
- Recepción de eventos de webhook de un GitHub App
- Use GitHub App para solicitar tokens de instalación temporales.
- Ejecución de lógica de larga duración o interempresarial
- Integración con sistemas empresariales externos
Algunos ejemplos son:
- Administración de configuraciones de toda la organización
- Servicios de cumplimiento de directivas
- Sincronización de metadatos o código de varios repositorios
- Generación de informes de cumplimiento
- Administración de problemas o de solicitudes de incorporación de cambios (pull requests) entre organizaciones
Todos ellos dependen de GitHub Apps para la autenticación, la identidad y los eventos, no para la ejecución.
Funcionamiento conjunto de estos componentes
La mayoría de la automatización empresarial utiliza una combinación de GitHub Apps, servicios externos y GitHub Actions para lograr flujos de trabajo sólidos y escalables.
Por ejemplo:
- Una empresa GitHub App recibe un webhook cuando se crea un nuevo repositorio y envía la carga del webhook a un servidor donde se ejecuta un servicio externo.
- El servicio externo estandariza la configuración necesaria y aprovisiona recursos.
- El servicio desencadena un flujo de trabajo GitHub Actions en el repositorio.
- El flujo de trabajo realiza CI, implementa plantillas o configura el escaneo.
Cada componente controla una capa de automatización diferente.
Cuándo usar cada tipo de automatización
Use una GitHub App cuando lo necesites:
- Autenticación o permiso para actuar en muchos repositorios
- Integración con sistemas externos
- Automatizaciones controladas por webhooks
- Flujos de trabajo de larga duración o de toda la empresa
- Auditabilidad y separación de identidades
Utilice automatizaciones externas cuando necesite:
- Lógica que se ejecuta continuamente o fuera de GitHub
- Integración con sistemas internos
Utilice GitHub Actions cuando necesites:
- Canalizaciones de CI/CD
- Automatización con ámbito de repositorio
- Comprobaciones automatizadas vinculadas a eventos de repositorio
- Ejecución de lógica mediante la infraestructura de ejecución de GitHub
Usa GitHub Apps y GitHub Actions juntos cuando:
- Un flujo de trabajo debe actuar más allá de los permisos predeterminados del repositorio.
- Un GitHub App debe desencadenar un proceso de trabajo
- La lógica externa organiza la ejecución en el repositorio
- Las directivas o flujos de trabajo de toda la empresa requieren identidad y tiempo de ejecución
Pasos siguientes
Para crear GitHub Apps que pueda acceder a recursos de nivel empresarial y automatizar el flujo de trabajo, consulte Creación de aplicaciones empresariales.