Qué es Jenkins

Introducción a Jenkins: ¿qué es, para qué sirve y cómo funciona?

En este artículo hacemos una introducción a Jenkins, la herramienta automatización de tareas en procesos de integración continua (CI) más extendida. Veremos qué es Jenkins, cómo funciona, para qué sirve y por qué es una muy buena opción si queremos aplicar CI en nuestros proyectos de software. También explicaremos de forma sencilla en qué consiste la práctica de la integración continua y por qué es importante.

¿Qué es Jenkins?

Jenkins es un servidor open source para la integración continua. Es una herramienta que se utiliza para compilar y probar proyectos de software de forma continua, lo que facilita a los desarrolladores integrar cambios en un proyecto y entregar nuevas versiones a los usuarios. Escrito en Java, es multiplataforma y accesible mediante interfaz web. Es el software más utilizado en la actualidad para este propósito.

Con Jenkins, las organizaciones aceleran el proceso de desarrollo y entrega de software a través de la automatización. Mediante sus centenares de plugins, se puede implementar en diferentes etapas del ciclo de vida del desarrollo, como la compilación, la documentación, el testeo o el despliegue.

Para comprender mejor el valor de esta herramienta, vamos a explicar qué es la integración continua y por qué es importante ponerla en práctica en nuestros proyectos de desarrollo de software. Pero antes, repasamos brevemente la historia de Jenkins.

Origen de Jenkins

La primera versión de Jenkins surgió en 2011, pero su desarrollo se inició en 2004 como parte del proyecto Hudson. Kohsuke Kawaguchi, un desarrollador de Java que trabajaba en Sun Microsystems, creó un servidor de automatización para facilitar las tareas de compilación y de realización de pruebas. 

En 2010, surgieron discrepancias relativas a la gestión del proyecto entre la comunidad y Oracle y, finalmente, se decidió el cambio de denominación a “Jenkins”. Desde entonces los dos proyectos continuaron desarrollándose independientemente. Hasta que finalmente Jenkins se impuso al ser utilizado en muchos más proyectos y contar con más contribuyentes.

¿Qué es la integración continua (CI)?

La integración continua o Continuous Integration (CI) es una práctica habitual en desarrollo de software que consiste en integrar frecuentemente mejoras en el código de un proyecto una vez han sido validadas, normalmente varias veces al día, con el objetivo de detectar errores lo antes posible. 

Cada cambio que realiza un desarrollador (ya sea una resolución de un bug, la creación de una nueva funcionalidad, etc.) se comprueba compilando el código fuente y obteniendo un ejecutable (llamado build). Si es validado, será incorporado al código fuente y desplegado. 

Realizar builds frecuentemente y comprobar su funcionamiento ayuda a conseguir un producto final más fiable, al prevenir fallos en producción. Gracias a la integración continua los desarrolladores pueden detectar y corregir errores constantemente, evitar despliegues traumáticos y reducir notablemente el time to market

Además, gracias a herramientas como Jenkins, se puede conocer el estado del software en cada momento, monitorizar la calidad del código, la cobertura de las pruebas y reducir la deuda técnica y los costes.

La integración continua es parte integral de DevOps y trabaja en la línea de entregar valor a los usuarios en el menor tiempo posible. Se vincula habitualmente con el Extreme Programming (XP) y las metodologías ágiles.

¿Por qué usar Jenkins para realizar CI?

Antes de disponer de herramientas como Jenkins para poder aplicar integración continua nos encontrábamos con un escenario en el que:

  • Todo el código fuente era desarrollado y luego testeado, con lo que los despliegues y las pruebas eran muy poco habituales y localizar y corregir errores era muy laborioso. El tiempo de entrega del software se prolongaba.
  • Los desarrolladores tenían que esperar al desarrollo de todo el código para poner a prueba sus mejoras.
  • El proceso de desarrollo y testeo eran manuales, por lo que era más probable que se produjeran fallos.

Sin embargo, con Jenkins (y la integración continua que facilita) la situación es bien distinta:

  • Cada commit es desarrollado y verificado. Con lo que en lugar de comprobar todo el código, los desarrolladores sólo necesitan centrarse en un commit concreto para corregir bugs. 
  • Los desarrolladores conocen los resultados de las pruebas de sus cambios durante la ejecución.
  • Jenkins automatiza el despliegue y las pruebas, lo que ahorra mucho tiempo y evita errores.
  • El ciclo de desarrollo es más rápido. Se entregan más funcionalidades y más frecuentemente a los usuarios, con lo que los beneficios son mayores.

¿Qué se puede hacer con Jenkins?

Con Jenkins podemos automatizar multitud de tareas que nos ayudarán a reducir el time to market de nuestros productos digitales o de nuevas versiones de ellos. Concretamente, con esta herramienta podemos:

  • Automatizar la compilación y testeo de software.
  • Notificar a los equipos correspondientes la detección de errores.
  • Desplegar los cambios en el código que hayan sido validados.
  • Hacer un seguimiento de la calidad del código y de la cobertura de las pruebas.
  • Generar la documentación de un proyecto.

Podemos ampliar las funcionalidades de Jenkins a través de múltiples plugins creados por la comunidad, diseñados para ayudarnos en centenares de tareas, a lo largo de las diferentes etapas del proceso de desarrollo.

¿Cómo funciona Jenkins?

Para entender cómo funciona Jenkins vamos a ver un ejemplo de cómo sería el flujo de integración continua utilizando esta herramienta:

  • Un desarrollador hace un commit de código en el repositorio del código fuente. 
  • El servidor de Jenkins hace comprobaciones periódicas para detectar cambios en el repositorio.
  • Poco después del commit, Jenkins detecta los cambios que se han producido en el código fuente. Compila el código y prepara un build. Si el build falla, envía una notificación al equipo en cuestión. Si resulta exitoso, lo despliega en el servidor de testeo.
  • Después de la prueba, Jenkins genera un feedback y notifica al equipo el build y los resultados del testeo.
  • Jenkins continúa revisando el repositorio frecuentemente y todo el proceso se repite.
Cómo funciona Jenkins
Ejemplo de proceso de integración continua (CI) utilizando Jenkins.

Ventajas de Jenkins

Algunas de las características que hacen de Jenkins una de las mejores herramientas para aplicar integración continua son:

  • Es sencilla de instalar.
  • Es una herramienta opensource respaldada por una gran comunidad.
  • Es gratuita.
  • Es muy versátil, gracias a sus centenares de plugins.
  • Está desarrollada en Java, por lo que funciona en las principales plataformas.

Desventajas de utilizar Jenkins

Algunos aspectos negativos de Jenkins a tener en cuenta a la hora de decantarnos por ella son:

  • Su interfaz de usuario es anticuada y poco intuitiva, aunque puede mejorarse con plugins como Blue Ocean.
  • Sus pipelines son complejas y pueden requerir mucho tiempo de dedicación a las mismas.
  • Algunos de sus plugins están desfasados.
  • Necesita de un servidor de alojamiento, que puede conllevar configuraciones tediosas y requerir ciertos conocimientos técnicos.
  • Necesita ampliar su documentación en algunas áreas. 

Conclusión

Jenkins es una herramienta de automatización de despliegues esencial para implementar una metodología de integración y despliegue continuos. En este artículo hemos visto en detalle en qué consiste, qué podemos hacer con ella, cómo funciona y sus ventajas y desventajas frente a otras herramientas similares.

Si ya practicas habitualmente la integración continua, ha llegado el momento de dar un paso más con nuestra plataforma de gestión del flujo de valor: SENTRIO. Conecta las distintas herramientas que intervienen en el ciclo de vida del desarrollo de software para centralizar toda la información sobre calidad, seguridad y velocidad de desarrollo. Concretamente, se integra con Jenkins para conocer las releases que se producen en cada uno de los entornos de ejecución.

Descubre cómo SENTRIO te ayuda a optimizar tus procesos de desarrollo y despliegue de software. ¡Contacta con nosotros!

Comparte

Facebook
Twitter
Pinterest
LinkedIn

Entradas relacionadas