Hudson. Eligiendo nuestro entorno de Integración Continua (IV).

05 nov 2008

Nos encontramos ante un software relativamente novedoso, pero que se ha convertido en uno de los referentes en cuanto a sistemas de Integración Continua. Es una herramientas software libre desarrollada en Java y mantenida por Sun Microsystems desde su web java.net. La herramienta puede ser descargada desde https://hudson.dev.java.net/.

  • Instalación

La instalación de Hudson es extremadamente sencilla, pudiéndose realizar una evaluación del software utilizando un instalador Java Web Start desde la web del producto. Así mismo, se puede descargar e instalar la aplicación de forma standalone, o se puede desplegar sobre un servidor de aplicaciones mediante el fichero empaquetado hudson.war.

El sistema está pensado para que nunca sea necesario editar ningún fichero de configuración externo, ofreciéndonos una administración web sencilla pero que contempla una configuración visual integral (incluyendo por ejemplo la parametrización de SMTP, base de datos, seguridad, etc.).

La documentación de instalación oficial del producto es buena, e incluye incluso algunos vídeos screencasts. Por otro lado, si en algún momento nos sentimos confundidos con la configuración, el sistema ofrece una completa ayuda en linea y contextual que facilita mucho la tarea de configuración para personas no familiarizadas a priori con este tipo de sistemas.

  • Administración, gestión de proyectos

La herramienta ofrece una interfaz muy intuitiva para su administración, por lo que como hemos comentado antes, no será necesario personal especializado para su administración, pudiéndose realizar todas las tareas desde la propia consola web.

La herramienta permite la definición de tareas periódicas desde su interfaz web mediante un editor similar a cron dotado de una completa ayuda contextual.

Por otro lado, durante las pruebas, la migración de los proyectos a Hudson ha resultado ser muy rápida y sencilla, consiguiendo un entorno totalmente configurado y funcional en poco tiempo.

Respecto a su mecanismo de actualización, Hudson es el mejor de los sistemas analizados, ya que sólo es necesario descargar el nuevo empaquetado .war y sustituir el existente, asegurándose la plataforma de mantener la compatibilidad de forma automática. Por otro lado, es el propio Hudson el que nos avisará de la existencia de nuevas versiones, tanto del sistema completo como de sus plugins.

  • Seguridad

El sistema ofrece un sistema de seguridad completo y muy flexible, y totalmente configurable desde la consola web, permitiéndonos o bien integrarnos con sistemas externos de autenticación (LDAP, bases de datos externas) o delegar la seguridad en el propio Hudson.

Si optamos por que Hudson gestione la seguridad, dispondremos de múltiples opciones que cubren todo el abanico de necesidades, como seguridad basada en perfiles, asociación de permisos por proyectos o por matriz de acciones.

  • Integración con sistemas externos

Hudson ofrece un mecanismo de extensión muy completo, que junto con el gran número de plugins ya existentes le permiten su integración con un gran número de sistemas y herramientas. Por otro lado, aunque está preparado (al igual que Continuum o LuntBuild) para utilizar directamente los plugins Maven, proporciona los mecanismos adecuados para no depender de una correcta configuración de estos plugins en el fichero pom.xml de los proyectos. Esta centralización de la configuración constituye una ventaja muy importante respecto a sus competidores, ya que garantiza que, independientemente de lo contenido en el pom.xml, se puedan ejecutar los procesos de chequeo y validación deseados.

Por otro lado, existe una integración plena entre Hudson y sus plugins. Los resultados de éstos podrán ser visualizados en la herramienta web, incluyendo tanto conclusiones de testeo, estilos, pruebas unitarias, etc… como los resultados de los procesos de despliegue. Nuevamente Hudson es la única plataforma en permitir este tipo de funcionalidad avanzada.

Por otro lado, permite la integración con la mayoría de sistemas de control de versiones (SVN, CVS, etc.), ya sea de base, o mediante la inclusión de los plugins necesarios.

Es de especial interés el mecanismo de instalación y gestión de plugins, ya que la herramienta nos permite la descarga e instalación automática desde su interfaz web, avisándonos incluso de la aparición de nuevas versiones de los mismos de forma automática.

Otro factor muy importante es la completa documentación para poder desarrollar nuestros propios plugins, que nos permitirán adaptar el sistema a las particularidades propias de cada entorno.

También resulta curiosa la integración con sistemas como Twitter, Jabber, etc., que nos permiten hacernos una idea del avanzadísimo nivel de los mecanismos de integración incorporados en la plataforma. Sin duda, esta es la característica en la que más se destaca Hudson frente a Continuum o LuntBuild.

  • Tipos de proyectos

Aunque la herramienta esta principalmente enfocada a proyectos Java, gracias sus plugins tiene soporte para gran multitud de formatos como por ejemplo Ivy, Nant, Rake, Ant, Maven, Phing, Shell scripts, y para lenguajes como .Net, Groovy, Rails, PHP.

  • Facilidad de uso

La herramienta ofrece una interfaz potente y muy usable, que permite que personal no cualificado o con poca experiencia en este tipo de herramientas se adapte a su uso con facilidad.

La documentación oficial es completa, y junto con la ayuda contextual en todos los elementos de la interfaz hace que la curva de aprendizaje sea muy rápida.

  • Estabilidad

Nos encontramos ante un software muy estable, al igual que ocurría con sus dos competidores directos. Prueba de ello es que está siendo utilizado para todos sus proyectos en grupos de desarrollo como JBoss. Como sistema de Integración Continua, tiene una política de publicación de actualizaciones muy dinámica que hace que se liberen versiones cada pocas semanas, lo cual podría ser un inconveniente de no ser por las posibilidades de actualización automática comentadas. A continuación se indican las principales versiones liberadas:

En lo referido al rendimiento, el sistema permite la gestión de hilos de ejecución dedicados a tareas de compilación y la ejecución de compilación distribuidas, lo que le confiere excelentes características de escalabilidad y adaptabilidad al entorno disponible.

Hudson 1.256

Julio 2008

Hudson 2.00

Marzo 2008

Hudson 1.100

Abril 2007

  • Conclusiones sobre Hudson

La herramienta, gracias a su sistemas de plugins, ha resultado ser muy versátil y fácilmente adaptable a necesidades particulares. Por otro lado, su sencilla interfaz la hacen ideal para su uso por personal no especializado en este tipo de herramientas.

Aunque la herramienta es la más joven de las estudiadas, está teniendo una rápida aceptación y divulgación en el mercado, y ha demostrado completamente su fiabilidad.

Próximamente: Conclusiones finales. Eligiendo nuestro entorno de Integración Continua (V).

Si te ha gustado esta entrada, ¿por qué no compartirla?

10 Responses10 Respuestas toPara “Hudson. Eligiendo nuestro entorno de Integración Continua (IV).”

  1. JCalamaro 5 de noviembre de 2008 at 15:06 #

    De las analizadas hasta aqui, me parece la mejor. La di un vistazo muy rapido pero me parece que es un ejemplo de como los problemas complejos no siempre tienen que estar solucionados de forma compleja. A veces estas cosas simples te alegran la vida. 😀

  2. ecamacho 5 de noviembre de 2008 at 18:52 #

    He estado siguiendo tu serie de artículos, gracias por publicarlos. Me han sido bastante útiles y no creo ser el único. La Integración Continua como que no tiene muchos seguidores 😛 y es difícil hallar buena información.

    Espero la conclusión!

  3. ibon 5 de noviembre de 2008 at 18:54 #

    jejeje, comparto todas vuestras palabras y algunas más. De hecho me ha enamorado incluso como aplicación web: los plugins se integran con la aplicación base de una forma completa, algo bastante raro en el mundo Java. Bueno, bonito, fácil y extendible. Un job = Un directorio en el disco duro. Borramos un directorio = quitamos un job, nada de xml, ni tener que leerse un tocho para empezar a funcionar con él, y una ayuda integrada clara, concisa e incluso “bonita”.
    Será que el desarrollador es japonés, pero tiene un no se qué, que hace que me encante usarlo. Y en mi entorno ha causado adicción.
    Vamos, que parezco el primo de Hudson 😉
    Salu2

  4. Félix García Borrego 6 de noviembre de 2008 at 9:18 #

    ibon,
    :), nosotros estamos igual, nos pasamos un año “utilizando” Continuum y a la hora de la verdad todo el mundo se iba a consola a ejecutar, pero ahora casi todo el mundo en la empresa tiene adicción a Hudson.
    Si tu eres el primo de Hudson, por aquí tienes muchos familiares :p

  5. ibon 6 de noviembre de 2008 at 12:31 #

    jejeje. Entre mi servidor ubuntu hardy y el hudson la infraestructura ha dejado de ser eso complejo, aburrido y dificil de configurar. Con lo cual ahora automatizo mucho más y redunda en el dia a dia.
    Es como con la seguridad: si es demasiado compleja o de dificil configuración, se deja de hacer.
    Hasta luego primos 😉
    Salu2 de otro “fósforo” del Hudson.

  6. Gonzalo Ibañez 11 de marzo de 2009 at 14:45 #

    En este blog encontre informacion interesante sobre Hudson.
    http://alevouilloz.blogspot.com/

  7. Cristian 26 de octubre de 2009 at 15:40 #

    Excelente análisis e informe. Estoy en una consultora en argentina que hizo análisis similares, y llegaron a la misma conclusión. Espero no les moleste.
    han realizado nuevos análisis?

  8. jose 12 de enero de 2010 at 20:39 #

    Resulta bastante interesante

  9. franco 30 de agosto de 2010 at 22:18 #

    Muy bueno el informe , justo lo que estaba buscando!
    De mucha utilidad para la facultad como una intro para saber de q se trata esta herramienta!

  10. Elizabeth 6 de septiembre de 2010 at 15:29 #

    Hace rato que vengo buscando un sitio, donde me expliquen si puedo y hasta que porciento de posibilidad hay que este sistema trabaje en conjunto con Sahi, por favor de saber algo contestame, me seria de mucha ayuda

Leave a ReplyDeje una respuesta