Qué es Jenkins y cómo automatiza CI/CD
Autor: Redacción Domeny.ForSale Publicado
En breve: Jenkins es un servidor de automatización de código abierto que ayuda a los equipos de desarrollo a construir, probar y desplegar aplicaciones. Se utiliza sobre todo en procesos de CI/CD, es decir, para comprobar periódicamente los cambios en el código y preparar nuevas versiones para su publicación. Puedes ejecutarlo en tu propio servidor con Linux, pero entonces tendrás que encargarte del mantenimiento, las actualizaciones y la seguridad.
Para qué sirve Jenkins y qué no es
Jenkins ejecuta tareas siguiendo una secuencia definida: obtiene el código, ejecuta comandos, guarda los resultados e informa de si la ejecución ha finalizado correctamente o con un error. Una tarea puede iniciarse tras un cambio en el repositorio, según una programación o a petición del usuario. Un repositorio es el lugar donde se almacena el código junto con su historial de cambios.
Sin embargo, no es un sistema para gestionar al personal de desarrollo ni sustituye a una herramienta de planificación del trabajo. Jenkins automatiza operaciones técnicas; no asigna responsabilidades ni evalúa al equipo. Tampoco sustituye a un sistema de control de versiones como Git, aunque puede trabajar con él.
Sus usos habituales incluyen:
- construir aplicaciones, es decir, transformar el código en un formato listo para ejecutarse o distribuirse;
- ejecutar pruebas y controles de calidad del código;
- preparar paquetes o imágenes de contenedores;
- publicar resultados y desplegar aplicaciones en el entorno elegido.
Jenkins coordina estas operaciones, pero normalmente utiliza otras herramientas para llevarlas a cabo. No compila por sí solo todos los lenguajes ni incluye las pruebas de cada aplicación: ejecuta los comandos preparados por el equipo.
Cómo ayuda Jenkins en los procesos de CI/CD
CI, o integración continua, consiste en integrar con frecuencia los cambios en el código y comprobar automáticamente que la aplicación sigue construyéndose correctamente y supera las pruebas. Así, el equipo puede detectar antes si un cambio nuevo ha estropeado una función existente. Sin embargo, el resultado de estas comprobaciones no garantiza la ausencia de errores: depende del alcance y la calidad de las pruebas.
CD puede significar entrega continua o despliegue continuo. En la entrega continua, la versión verificada queda lista para publicarse, pero ponerla a disposición de los usuarios puede requerir una aprobación. En el despliegue continuo, un cambio que cumple las condiciones establecidas pasa automáticamente a producción. Producción es el entorno que utilizan los usuarios reales.
Jenkins no impone ninguno de estos modelos. Puedes configurar solo las pruebas, un despliegue completo o un proceso con aprobación manual antes de la publicación. Instalar la herramienta no basta para crear un proceso de CI/CD: también hay que definir los pasos, los criterios de éxito y cómo se gestionarán los errores.
Pipeline: una receta para ejecutar el trabajo
Un pipeline describe las sucesivas etapas de automatización. En Jenkins suele guardarse en un archivo Jenkinsfile, almacenado junto con el código de la aplicación. Así, los cambios en el proceso de construcción pueden revisarse y someterse a control de versiones igual que los cambios en el propio programa.
Imagina un equipo que desarrolla una tienda en línea. Después de enviar un cambio al repositorio, Jenkins puede ejecutar el siguiente procedimiento:
- Obtener la versión indicada del código.
- Instalar las dependencias y construir la aplicación.
- Ejecutar pruebas, por ejemplo, para comprobar el cálculo del importe del carrito.
- Guardar un artefacto, es decir, el resultado de la construcción, como un paquete de la aplicación.
- Desplegar ese paquete en el entorno de pruebas.
- Esperar la aprobación de una persona autorizada antes de desplegarlo en producción.
Si la prueba del carrito falla, un pipeline bien configurado detendrá las etapas posteriores. El equipo recibirá el resultado de la ejecución y los logs, es decir, el registro de lo ocurrido durante la ejecución de los comandos, que ayuda a identificar la causa del problema.
Una regla práctica es desplegar el mismo artefacto que ya ha superado las pruebas. Volver a construir la aplicación antes de publicarla puede producir un resultado distinto, por ejemplo, si han cambiado las dependencias que se descargan.
Jenkins en tu propio servidor con Linux: qué debes mantener
Puedes alojar Jenkins por tu cuenta en Linux, entre otras opciones, como servicio o en un contenedor. Necesita un entorno Java compatible. Antes de instalarlo, consulta en la documentación oficial los requisitos de la versión de Jenkins elegida, las versiones de Java compatibles y el método de instalación recomendado.
En configuraciones de mayor tamaño, Jenkins separa la coordinación del trabajo de su ejecución. El controlador gestiona las tareas y la configuración, mientras que los agentes ejecutan las operaciones de construcción y prueba. Esta división permite elegir los entornos de ejecución adecuados para cada proyecto y reducir la carga del controlador.
Alojarlo por tu cuenta te da control sobre el entorno, pero también implica obligaciones concretas:
- actualizar Jenkins, el sistema y los plugins que amplían sus funciones;
- gestionar los accesos y las credenciales, como los tokens;
- hacer copias de seguridad y comprobar que se puede restaurar la configuración;
- supervisar el espacio en disco, los logs y el consumo de recursos.
Hay que extremar la precaución al ejecutar código de personas que no sean de confianza. Una tarea de automatización ejecuta comandos, por lo que no debe tener acceso innecesario a secretos ni a la infraestructura de producción.
Cuándo elegir Jenkins
Jenkins puede ser una buena opción si el equipo necesita procesos flexibles, integración con distintas herramientas o ejecutar tareas en su propia infraestructura. También resulta útil cuando el proceso de publicación de una aplicación incluye pasos poco habituales que no encajan fácilmente en un esquema sencillo.
Esa flexibilidad tiene un coste: alguien debe mantener la configuración y resolver los problemas del servidor y de los plugins. Si un equipo pequeño solo necesita unas cuantas pruebas tras cada cambio, un servicio de CI/CD disponible junto a su repositorio puede requerir menos mantenimiento.
Antes de elegir, empieza por un único proceso: obtener el código, construir la aplicación y ejecutar las pruebas. Comprueba si puedes reproducirlo de forma fiable y quién se encargará de mantenerlo. Añade el despliegue automático solo después de definir los permisos y cómo revertir una versión defectuosa.
Véase también: ¿Qué es API?
