search
top

¿Qué es Jenkins? Explicado en menos de 10 min para quienes no lo conocen de nada

Si ya conoces Jenkins, y trabajas regularmente con dicha herramienta, o practicas la integración continua, ahórrate este post. 

Este post está pensando para aquellos que no van a trabajar directamente con Jenkins, pero quieren dejar de poner caras raras y mirar para otro lado cada vez que oyen hablar de esta herramienta. O de la integración continua. Para gente de dirección, interesados en la tecnología, comerciales, inversores en empresas tecnológicas, etc., que en 10 min quieran quedarse con la idea principal. Y también para aquellos que si que puede que algún día quieran implantar la integración continua y quieren empezar por aquí el camino que les queda por recorrer para conocer realmente esta práctica.

Este post pretende enseñarte qué te puede aportar utilizar Jenkins. Y qué beneficios puedes sacar de la integración continua. Así que ¡vamos allá!

—–


En pocas líneas…¿Qué es la integración continua? (Aquella buena práctica que facilita Jenkins)

La integración continua es una práctica de desarrollo software donde los miembros del equipo integran su trabajo frecuentemente (como mínimo una vez al día, aunque normalmente se realizan múltiples integraciones diarias).

Cada integración se verifica compilando el código fuente y obteniendo un ejecutable (a esto se le llama build, y debe hacerse de forma automatizada).Además también se pasan las pruebas y métricas de calidad para detectar los errores tan pronto como sea posible.

Es muy recomendable hacer builds periódicamente y comprobar que funcionen correctamente, para conseguir un producto final más fiable, con menos fallos en producción.

Al integrar frecuentemente el código, y con la ayuda de herramientas como Jenkins, puedes saber el estado del software en todo momento. Sabes qué funciona, qué no y qué errores hay.

También puedes monitorizar la calidad del código y su cobertura de pruebas. La integración continua incluso puede ayudarte a reducir la deuda técnica (aquí puedes saber más sobre la deuda técnica) y mantener los costes bajos.

Así que… ¿Cómo conseguir todo esto? ¡Veamos qué es Jenkins!


Jenkins

Jenkins es un servidor de integración continua, gratuito, open-source y actualmente uno de los más empleados para esta función. Además es muy fácil de utilizar. Lo puedes descargar desde aquí.

Esta herramienta, proviene de otra similar llamada Hudson, ideada por Kohsuke Kawaguchi, que trabajaba en Sun. Unos años después de que Oracle comprara Sun, la comunidad de Hudson decidió renombrar el proyecto a Jenkins, migrar el código a Github y continuar el trabajo desde ahí. No obstante, Oracle ha seguido desde entonces manteniendo y trabajando en Hudson.


Y te preguntarás… ¿Qué papel juega Jenkins dentro del proceso de integración continua?

La base de Jenkins son las tareas, donde indicamos qué es lo que hay que hacer en un build. Por ejemplo, podríamos programar una tarea en la que se compruebe el repositorio de control de versiones cada cierto tiempo, y cuando un desarrollador quiera subir su código al control de versiones, este se compile y se ejecuten las pruebas.

Si el resultado no es el esperado o hay algún error, Jenkins notificará al desarrollador, al equipo de QA, por email o cualquier otro medio, para que lo solucione. Si el build es correcto, podremos indicar a Jenkins que intente integrar el código y subirlo al repositorio de control de versiones.

Pero la cosa no queda ahí. Una de las cosas buenas que tiene Jenkins es que además de poder ayudarte a integrar el código periódicamente, puede actuar como herramienta que sirva de enlace en todo el proceso de desarrollo.

Desde Jenkins podrás indicar que se lancen métricas de calidad y visualizar los resultados dentro de la misma herramienta. También podrás ver el resultado de los tests, generar y visualizar la documentación del proyecto o incluso pasar una versión estable del software al entorno de QA para ser probado, a pre-producción o producción.

Por ejemplo, en esta imagen puedes ver una zona del cuadro de mando de Jenkins, donde aparecen las distintas tareas que se han llevado a cabo, la duración, cuándo se produjo el último fallo… jenkins


Terminando: Cosas a tener en cuenta para llevar a cabo la integración continua con Jenkins

En primer lugar, es imprescindible tener un repositorio de control de versiones (mercurial, git, svn, plastic, etc). Todo lo necesario para realizar el build debe estar allí (código, scripts de test, librerías de terceros…).

Sin esto, no podremos sacar el máximo partido a Jenkins, ya que uno de sus puntos fuertes es que es capaz de monitorizar el control de versiones y actuar ante cualquier cambio.

Además, para que la integración continua funcione, es imprescindible que el equipo esté mentalizado y comprometido.

Por ejemplo (y puede que de tanto repetirlo se haga pesado, pero créeme, hay veces que esto no se sigue. Fíjate en este post, que cuenta una experiencia real lo importante que es el control de versiones ) todo el código debe subirse al control de versiones. Los desarrolladores deben subir su trabajo periódicamente al repositorio. Además los proyectos tienen que tener un proceso de build automático, y si un build falla, lo más prioritario debe ser arreglarlo.

Aún así, y sin dudarlo, con todo lo que nos aporta esta buena práctica, merece la pena llevarla a cabo. Y merece la pena utilzar Jenkins.

Ana M. del Carmen García Oterino

233 Practitioner at 233 Grados de TI
Apasionada por la calidad del software y buenas prácticas en general.

233 Practitioner en 233 Grados de TI.

Participa en la empresa 233, en proyectos relacionados con la implantación de metodologías ágiles, Scrum y calidad del software para importantes organizaciones.

Ha trabajado implantando integración continua en las empresas, en todas sus etapas, desde la definición de la estrategia del control de versiones hasta la automatización de los despliegues, pasando por estrategias de pruebas manuales y automáticas en integración continua.

También participa activamente en la Comunidad 233 :D

https://www.linkedin.com/in/amgarciao

4 Respuestas to “¿Qué es Jenkins? Explicado en menos de 10 min para quienes no lo conocen de nada”

  1. Javier dice:

    Gran post. Nos sorprenderíamos al ver cuanta gente “Programadora” no conoce este tipo de herramientas.

    Gracias!

  2. penyaskito dice:

    Gracias por divulgar tecnologías para el gran público :D

    El pejiguera que llevo dentro me obliga a decir: “Todo lo necesario para realizar el build debe estar [en el control de versiones] (código, scripts de test, librerías de terceros…).” Lo de las librerías de terceros no es cierto, puede haber scripts que las obtengan (o procesos de construcción con herramientas como maven).

    Gracias de nuevo!

  3. rafa dice:

    Totalmente de acuerdo.
    En mi empresa lo comenté y prefieren no hacer nada de ci, test ni control de calida, ej. Sonar. Asi nos va!!!

  4. Beltrán dice:

    No he leído el artículo, conozco bien la integración continua, pero me llama la atención que se haya utilizado Jenkins como ejemplo. Personalmente considero que tiene un mal acabado y lo considero bastante flojo. Si se busca algo equivalente en software libre mucho mejor CruiseControl. De acuerdo que exige picar mucho más XML frente a tanto asistente en Jenkins pero el resultado es bastante mejor.

    Si se prefiere un software comercial de integración continua TeamCity es una excelente apuesta. La versión gratuita es interesante para grupos pequeños.

Dejar una respuesta

Tu dirección de correo electrónico no será publicada.

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

top