Jenkins CI - Qué es y porqué usarlo
Jenkins CI es un sistema de Integración continua java web desarrollado por Kohsuke Kawaguchi, desarrollador de la ex Sun Microsystems y ahora en Oracle. Es open source.
Es una pieza importante en lugares donde a veces una corrección de 5 minutos demora en ver la luz una semana debido a que tiene que pasar por toda una serie de procesos manuales de control, confección de instaladores y en su posterior distribución para usuarios finales.
Puede ser instalado tanto sobre windows, como linux y otras distribuciones unix compatibles. Por ser una aplicación java web es recomendable su instalación sobre un servlets container, por lo que puede ser montado sobre un Apache Tomcat o Glassfish. Así mismo puede ejecutarse de manera autónoma ya que posee un servidor web integrado y hasta puede instalarse como servicio según como se lo ejecute.
Posee una larga lista de plugins los cuales le permiten definir tareas que puedan integrarse con herramientas de control de versiones (CVS, Subversion, Git u otros) y ejecutar proyectos basados en Apache Maven (recomendado debido a que maneja naturalmente las partes del ciclo de vida de un protecto mediante comandos simples), Apache Ant, Microsoft MSBuild, shell y batch scripts de Microsoft Windows. Además permite ejecutar tareas adicionales previo y posterior a la compilación como preparar el entorno, preparar un emulador, realizar un despliegue o compactar y subir binarios a un FTP.
Para ver la lista de plugins actuales ir al siguiente site: https://wiki.jenkins-ci.org/display/JENKINS/Plugins
Jenkins también posee un historial de cambios realizados por build o versión, saber quien lo realizo y cuales archivos fueron manipulados, y sus comentarios al respecto.
Porqué usarlo
- Simplifica significativamente (a un par de clicks y dentro de un marco web lo que lo hace fácilmente accesible desde cualquier parte) los procesos involucrados en el ciclo de vida de un proyecto, ya sean simples o repetitivos, largos y complejos como ser de generación de binarios integrando el trabajo de varios desarrolladores, ejecución de testing, generación de reportes de estado, armados de instaladores, publicación en pagina web, notificación a clientes de versiones beta, etc. sin la necesidad y el tiempo de una persona.
- Da un marco de simplicidad sobre la integración continua gracias a las diferentes posibilidades de notificaciones de éxitos y errores entre procesos, por lo que con la cultura adecuada sobre los mismos se puede asegurar una altísima calidad de software desde el primer día, evitando errores, demoras y a un mínimo coste.
- Debido a los múltiples sistemas de notificaciones por cual optar (ya sea por mail, chat, gtalk, twitter, etc ), es sencillo estar siempre informado y poder tomar decisiones rápidamente.
En próximos post pondré un ejemplo de como utilizar Jenkins para automatizar la construcción prueba y liberación de un proyecto.
Escrito por: Leonardo David Gonzalez
Muy buen artículo, información precisa y fácil de asimilar. Espero impaciente el post acerca de cómo utilizar Jenkins.
ResponderEliminarUn saludo.
Rodrigo
Gracias, Rodrigo! Que bueno ver mensajes de interés en estos temas, la verdad me motiva. En breve continuaré un ejemplo práctico de Maven/Jenkins orientado a compilación, testing y liberación de releases de aplicaciones web. Un abrazo.
EliminarExcelente post, muchas gracias! En general, los emprendedores y las empresas pequeñas de desarrollo, ni siquiera incorporan al día de hoy herramientas de control de versión como git o hg. Se debe agradecer a empresas como Attlasian y Red Hat que ponen servicios como Bitbucket o OpenShift, en donde ya se pueden comenzar a utilizar este tipo de herramientas dentro de su infraestructura en forma gratuita o a bajo costo, para poder testear su funcionamiento.
ResponderEliminarUn muy buen aporte, me basto con leerlo para entender en que esta herramienta podria ayudarme. Muchas Gracias!
ResponderEliminar