Hudson

 Este comentario de Blaxter me ha llevado a probar las herramientas que él indica para integración continua, en lugar de CruiseControl o Continuum.

La primera herramienta, bitten, la descarté sin probarla, porque parece que es como un plugin para Trac, que de momento no puedo usar, aunque quiero, porque no soporta CVS. Tampoco me fijé demasiado si se puede arrancar suelta, pero me hace la impresión de que sí.

Así que me fuí con la segunda, Hudson.

Una maravilla de herramienta.

La instalación muy sencilla. Se baja uno un .war y ejecuta java -jar hudson.war. Abres el navegador y ya tienes lista la página de hudson, preparada para configurar y añadir proyectos.

La configuración sencilla y toda a vía web. Todavía no he tenido que tocar ningún fichero externo, salvo la variable HUDSON_HOME antes de arrancar, para decirle a Hudson dónde debe situar todo.

Los proyectos se añaden fácil, copiando unos de otros, indicando el repositorio CVS, subversion o lo que sea, si es de maven, de ant, etc.

Sin embargo, lo que más me ha gustado de todo, es que es "inteligente". Trabajando con varios proyectos maven es capaz de ver las dependencias entre proyectos y automáticamente, si un proyecto necesita compilarse, después compila todos los que dependen de él. Y al revés, para mirar si un proyecto necesita compilarse, mira también automáticamente si necesitan compilarse los proyectos de los que depende.

Dicho de otra forma, si tengo un proyecto LIBRERIA y otro proyecto PROYECTO que usa librería, si meto algo en CVS de LIBERIA, me compial LIBRERIA y automáticamente después compila PROYECTO. Y al revés, cuando mira a ver si hay algún cambio de CVS en PROYECTO para ver si necesita compilarlo, mira automáticamente también los posibles cambios en CVS de LIBRERIA.

Esto tiene la ventaja de que garantiza que todos los proyectos están siempre actualizados y compilados con las últimas librerías disponibles de las que dependen y que si se toca una librería, se detecta rápido si eso estropea el compilado de un proyecto.

Sin embargo tiene una "pega" o efecto curioso. Basta tocar un fuente en una librería para que Hudson se ponga a compilar como loco unos proyectos y otros, y los compilados de unos provoquen a su vez los compilados de otros. Por un simpel fuente tocado, puede pasarse un par de horas compilando todas las dependencias y las dependencias de las dependencias (cosa, por otro lado, lógica).

En cuanto al resto, también estupendo. Todo lo que se te ocurre configurar, esta configurable via web (el servidor de email, cuantos logs quieres que guarde, comando para construir los proyectos si no es el de defecto, los path de java, ant, maven, sh, etc, etc, etc. También puedes configurar cuántos hilos de compilado paralelos quieres, de forma que pueden compilar hasta n proyectos simultáneos, eligiendo tú el valor de n.

Me queda pendiente probar bitten, pero de momento Hudson lleva todas las papeletas de quedarse como herramienta.

 

Entradas relacionadas:

Esta entrada ha sido publicada en Herramientas y etiquetada como , , , , . Guarda el enlace permanente.

5 respuestas a Hudson

  1. Blaxter dijo:

    Bitten es para usarlo con trac. Sin trac no tiene sentido usarlo. Por lo que has comentado de tu entorno (todo java) desde luego que te aconsejo hudson.

  2. eynob dijo:

    Buenas,
    En mi trabajo usamos teamCity es bastante bueno, pero no se que facilidad tiene su instalacion, si andas echando uno ojo a varios, tambien puedes probar con este

    saludos

  3. Rafa dijo:

    También puedes echarle un ojo a luntbuild. Tiene una version libre y una pro.

    Es muy flexible aunque es un poco coñazo de configurar.

  4. Gonzalo Ibañez dijo:

    Lo mejorcito que he visto es Hudson. Es muy facil de usar, si necesitan info pueden visitar este blog: http://alevouilloz.blogspot.com/

  5. Pingback: » Interredes DevBlog

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.