Header Ads

Jenkins CI - Qué es y porqué usarlo




Comenzamos el año con un post sobre una de las herramientas imprescindibles para cuando trabajamos en desarrollos de mediana a gran escala: Jenkins.

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.

Jenkins proporciona integración continua para el desarrollo de software, es decir, permite configurar y agendar la ejecución de tareas conteniendo toda y/o cada una de las partes que conforman el ciclo de vida de un proyecto. Para dar una idea de esto, basta pensar en los famosos night- builds, los cuales son compilaciones, validaciones y liberación de versión beta que realizan algunos sistemas durante las noches de forma automática sobre lo que han ido trabajando los desarrolladores durante el día.

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.



Jenkins nace como fork del sistema predecesor Hudson CI del mismo autor, como alternativa open source desde que Sun  fue adquirida por Oracle y cambiada su licencia.

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
  1. 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.
  2. 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.
  3. 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:

4 comentarios:

  1. Muy buen artículo, información precisa y fácil de asimilar. Espero impaciente el post acerca de cómo utilizar Jenkins.

    Un saludo.
    Rodrigo

    ResponderEliminar
    Respuestas
    1. 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.

      Eliminar
  2. Excelente 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.

    ResponderEliminar
  3. Un muy buen aporte, me basto con leerlo para entender en que esta herramienta podria ayudarme. Muchas Gracias!

    ResponderEliminar

ESPACIO PUBLICITARIO

Con la tecnología de Blogger.