Nota: Los ejecutores hospedados en GitHub no son compatibles con GitHub Enterprise Server actualmente. Puedes encontrar más información sobre el soporte que se tiene planeado en el futuro en el Itinerario público de GitHub.
Introducción
Tanto Jenkins como GitHub Actions te permiten crear flujos de trabajo que compilan, prueban, publican, lanzan y despliegan código automáticamente. Jenkins y GitHub Actions comparten algunas similaridades en la configuración del flujo de trabajo:
- Jenkins crea flujos de trabajo utilizando Mapas Declarativos, los cuales son similares a los archivos de flujo de trabajo de GitHub Actions.
- Jenkins utiliza etapas para ejecutar un conjunto de pasos, mientras que GitHub Actions utiliza jobs para agrupar uno o mas pasos o comandos individuales.
- Jenkins y GitHub Actions son compatibles con compilaciones basadas en el contenedor. Para obtener más información, consulta "Crear una acción de contenedor Docker".
- Los pasos o tareas pueden reutilizarse y compartirse con la comunidad.
Para obtener más información, consulta la sección "Conceptos esenciales para GitHub Actions".
Diferencias clave
- Jenkins tiene dos tipos de sintaxis para crear mapas: Mapa Declarativo y Mapa de Script. GitHub Actions utiliza YAML para crear flujos de trabajo y archivos de configuración. Para obtener más información, consultala sección "Sintaxis de flujo de trabajo para GitHub Actions".
- Los despliegues de jenkins son típicamente auto-hospedados y los usuarios mantienen los servidores en sus propios centros de datos. GitHub Actions ofrece un acercamiento híbrido en la nube, hospedando sus propios ejecutores que puedes utilizar para ejecutar jobs, mientras que también son compatibles con ejecutores auto-hospedados. Para obtener más información, consulta la sección Acerca de los ejecutores auto-hospedados.
Comparación de capacidades
Distribuir tus compilaciones
Jenkis te permite enviar compilaciones a un agente de compilación sencilla, o puedes distribuirlas a través de varios agentes. También puedes clasificar estos agentes de acuerdo con diversos atributos, tales como los tipos de sistema operativo.
De forma similar, las GitHub Actions pueden enviar jobs a los ejecutores auto-hospedados u hospedados en GitHub, y puedes utilizar etiquetas para clasificar los ejecutores de acuerdo con diversos atributos. Para obtener más información, consulta las secciones "Entender las GitHub Actions" y "Acerca de los ejecutores auto-hospedados".
Utilizar secciones para organizar mapas
Jenkins divide sus Mapas Declarativos en varias secciones. De forma similar, las GitHub Actions organizan sus flujos de trabajo en secciones separadas. En esta tabla se comparan las secciones de Jenkins con el flujo de trabajo de GitHub Actions.
Directivas de Jenkins | GitHub Actions |
---|---|
agent | jobs.<job_id>.runs-on jobs.<job_id>.container |
publicación | |
stages | Trabajos |
pasos | jobs.<job_id>.steps |
Utilizar directivas
Jenkins utiliza directivas para administrar los Mapas Declarativos. Estas directivas definen las características de tu flujo de trabajo y la manera en que se ejecuta. La tabla siguiente demuestra cómo dichas directivas mapean los conceptos en GitHub Actions.
Utilizar etapas secuenciales
Proceso paralelo de jobs
Jenkins puede ejecutar las stages
y steps
en paralelo, mientras que, actualmente, GitHub Actions solo ejecuta jobs en paralelo.
Jenkins en Paralelo | GitHub Actions |
---|---|
parallel | jobs.<job_id>.strategy.max-parallel |
Matriz
Tanto GitHub Actions como Jenkis te permiten utilizar una matriz para definir varias combinaciones de sistema.
Jenkins | GitHub Actions |
---|---|
axis | strategy/matrix context |
stages | steps-context |
excludes |
Utilizar pasos para ejecutar tareas
Jenkins agrupa los steps
en stages
. Cada uno de estos pasos puede ser un script, función, o comando, entre otros. De manera similar, GitHub Actions utiliza jobs
para ejecutar grupos específicos de steps
.
Pasos de Jenkins | GitHub Actions |
---|---|
script | jobs.<job_id>.steps |
Ejemplos de tareas comunes
Programar un mapa para ejecutarse con cron
Mapa de Jenkins | Flujo de trabajo de GitHub Actions |
---|---|
|
|
Configurar variables de ambiente en un mapa
Mapa de Jenkins | Flujo de trabajo de GitHub Actions |
---|---|
|
|
Compilar desde proyectos ascendentes
Mapa de Jenkins | Flujo de trabajo de GitHub Actions |
---|---|
|
|
Compilar con sistemas operativos múltiples
Mapa de Jenkins | Flujo de trabajo de GitHub Actions |
---|---|
|
|