Jenkins fue revolucionario, pero ya no estamos en 2007
Si llevas tiempo trabajando en DevOps, seguramente habrás usado Jenkins. Durante años fue el estándar dorado en herramientas de CI/CD, y merece crédito por haber revolucionado la forma en que automatizamos pruebas y despliegues cuando muchos equipos aún lo hacían manualmente. Pero seamos sinceros: Jenkins ya muestra su edad. Desde sus archivos de configuración anticuados hasta el caos de dependencias de plugins, mantener Jenkins puede sentirse como un trabajo de tiempo completo.
Y entonces llegó GitHub Actions.
GitHub Actions no es perfecto—ninguna herramienta lo es—pero aporta una frescura enorme al mundo de CI/CD. Si sigues aferrándote a Jenkins, estoy aquí para convencerte de que ha llegado el momento de soltarlo.
Jenkins: Lo bueno, lo malo y lo feo
Antes de criticarlo, hay que reconocer todo lo que Jenkins hizo bien. Fue creado para ser flexible y, cuando se configura correctamente, es increíblemente poderoso. Puedes automatizar casi cualquier flujo de trabajo que imagines.
Lo bueno
- Extensibilidad: Jenkins cuenta con un ecosistema enorme de plugins. Si se te ocurre una funcionalidad, es probable que exista un plugin para ello.
- Código abierto: Al ser gratuito y open source, Jenkins es accesible para equipos con presupuestos limitados.
- Comunidad: Su comunidad es gigantesca, con usuarios y colaboradores que han mantenido vivo el proyecto por más de 15 años.
Lo malo
- Configuración compleja: Configurar Jenkins desde cero se siente como instalar un sistema operativo. Necesitas mantener un servidor, instalar plugins manualmente y lidiar con archivos de configuración complicados.
- Caos de plugins: El ecosistema de plugins es una bendición y una maldición. Las dependencias entre ellos pueden romper tus pipelines si no mantienes todo actualizado (suerte con eso).
- Experiencia de usuario: La interfaz parece salida de principios de los 2000, y las pipelines declarativas en Jenkinsfiles son verbosas y carecen de conveniencia moderna.
Lo feo
La parte más tediosa: el mantenimiento. Jenkins requiere atención constante: monitorear builds, resolver problemas de compatibilidad entre plugins y depurar trabajos fallidos. Si no tienes cuidado, Jenkins puede convertirse en ese servidor “especial” que casi da miedo tocar.
Por qué GitHub Actions es un cambio radical
Aquí entra GitHub Actions, la herramienta de CI/CD integrada directamente en GitHub. Si tu código está en GitHub (y seamos honestos, casi todo el mundo lo usa hoy en día), Actions hace que automatizar tus flujos de trabajo sea increíblemente fácil. Estas son las razones por las que supera a Jenkins.
Integración nativa con GitHub
GitHub Actions está incorporado en GitHub, lo que significa que no necesitas servidores externos, cuentas separadas ni configuraciones dolorosas. Tus workflows viven dentro de tu repositorio, junto con tu código, creando una experiencia cohesiva.
¿Quieres que se ejecute un pipeline al abrir un pull request? Es tan sencillo como esto:
name: CI Pipeline
on:
pull_request:
paths:
- '**.py'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytest
Eso es todo. No hay necesidad de lidiar con agentes de Jenkins, plugins personalizados ni escribir scripts en Groovy. Es simplemente YAML—fácil de leer, escribir y depurar.
Sin dolores de cabeza con la infraestructura
Mantener Jenkins implica también mantener el servidor donde corre, sea on-premise o en la nube. GitHub Actions elimina esa carga. No necesitas preocuparte por levantar instancias, aplicar parches al sistema operativo ni escalar agentes de build. GitHub se encarga de todo eso por ti.
Incluso puedes usar runners autogestionados si necesitas más control, pero para la mayoría de los equipos, los runners administrados por GitHub (Linux, macOS, Windows) son más que suficientes.
Marketplace de acciones preconstruidas
GitHub Actions aprovecha el Marketplace de GitHub, lleno de acciones reutilizables para tareas comunes. ¿Quieres desplegar en AWS? Hay una acción para eso. ¿Necesitas realizar un linting de tu código? También hay una acción para eso.
Aquí tienes un ejemplo de cómo desplegar una app de Node.js en AWS Elastic Beanstalk:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Deploy to AWS Elastic Beanstalk
uses: einaregilsson/beanstalk-deploy@v20
with:
aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
application_name: my-node-app
environment_name: production-env
region: us-east-1
Esta acción es mantenida por la comunidad, así que no necesitas escribir un script de despliegue desde cero.
Precios escalables
Jenkins es gratuito, pero “gratis” no significa realmente gratis cuando consideras el costo de la infraestructura y el mantenimiento. Con GitHub Actions, obtienes 2,000 minutos gratuitos al mes para runners administrados si tus repositorios son públicos. Para repositorios privados, el costo se ajusta al uso, y a menos que ejecutes pipelines enormes, es bastante asequible.
¿Cuándo sigue siendo relevante Jenkins?
De acuerdo, he sido duro con Jenkins, pero hay escenarios donde aún tiene sentido:
- Sistemas heredados: Si tu equipo ya invirtió años configurando Jenkins y todo funciona bien, cambiar de herramienta puede no valer la pena.
- Repositorios fuera de GitHub: Si tu código no está alojado en GitHub, Actions puede no ser una opción. Jenkins soporta prácticamente cualquier sistema.
- Infraestructura personalizada: Si necesitas control total sobre los servidores de build o si ejecutas pipelines en entornos aislados, Jenkins sigue siendo una buena elección.
Pero seamos sinceros: estos casos son cada vez menos comunes.
Migrar de Jenkins a GitHub Actions
Pasar de Jenkins a GitHub Actions puede parecer abrumador al principio, pero es más fácil de lo que piensas. Empieza poco a poco: elige un pipeline y migra ese primero. Aquí tienes un checklist rápido:
- Audita tus pipelines: Identifica qué hacen tus pipelines en Jenkins. Divídelos en pasos discretos.
- Configura workflows en Actions: Crea directorios
.github/workflowsen tus repositorios y empieza a traducir tus trabajos de Jenkins a YAML. - Prueba e itera: Ejecuta tus workflows de Actions y ajústalos hasta que sean estables.
- Desmantela Jenkins: Una vez que tus workflows funcionen bien, despídete de Jenkins. Disfruta tu recién encontrada libertad.
En resumen
Jenkins tuvo su momento de gloria, pero GitHub Actions es la herramienta de CI/CD que realmente necesitas en 2023. Es más simple, más rápida y mucho menos dolorosa de mantener. A menos que tengas una razón muy específica para seguir usando Jenkins, ha llegado el momento de avanzar.
De verdad: deja de desperdiciar tiempo cuidando servidores de Jenkins y peleando con plugins. GitHub Actions está diseñado para flujos de trabajo modernos, y se nota.
Entonces, ¿qué esperas? El futuro es YAML—y es espectacular.