17 junio 2009

Instalación y configuración de Hudson


Hudson es una herramienta open source para integración contínua que nos ayuda a monotorizar la ejecución de tareas repetitivas como el compilar un proyecto cada cierto tiempo. Además se enfoca en la construcción y prueba de proyectos de software contínuamente y en monitorizar la ejecución de tareas ejecutadas externamente.

Algunas de las características más sobresalientes de la herramienta son:
- Fácil de instalar: podemos hacer un deployment del archivo hudson.war en cualquier web container como tomcat, pero también podemos ejecutarlo como standalone mediante el comando:
java -jar hudson.war

- Configuración: Se realiza totalmente mediante su interfaz web lo cual nos ahorra el trabajo de estar editando archivos XML por nuestra cuenta.

- Soporta cvs y subversion como SCM: (SCM=manejador de la configuración del software) Aunque también puede trabajar sin repositorio para control de versiones (scm).

- Extensión de la herramienta mediante plugins. Actualmente se cuentan con plugins de JIRA, findbugs, Plot, Polarion, Trac, Clover entre otros.

- Soporte para reportes de JUnit y TestNG: Los cuales pueden ser tabulados, resumidos y desplegados junto con información histórica.

En este post veremos como instalar y configurar la herramienta e integrarla con Apache y Subversion. (si aún no has instalado Subversion, puedes revisarte este post para hacerlo)

Lo primero que debemos hacer es descargar el archivo hudson.war desde su página oficial.

Ya descargado, podemos probarlo abriendo una consola en la carpeta donde este el archivo y ejecutando el comando:java -jar hudson.war con lo que empezará a escuchar solicitudes desde el puerto 8080; es importante no cerrar la ventana de comandos mientras usemos hudson ya que si lo hacemos, se para el servicio.

Para probar hudson nos vamos al navegador y escribimos http://localhost:8080/ con lo que nos deberá abrir la siguiente página:

Como notaremos, la primera vez que lo ejecutamos no hay ningún trabajo en lista, por lo que procedemos a crear uno dando un click en el link "new job" de la esquina superior izquierda. En esta nueva página, se nos presentarán cuatro opciones diferentes para crear un tipo de trabajo, sin embargo, nosotros seleccionamos la segunda "build a free-style software project" y le asignamos un nombre al trabajo (en mi caso "holaHudson"), al final presionamos ok.

La siguiente es la página de configuración del nuevo job, aquí podemos chequear todas las opciones que nos dá pero lo más importante es que configuremos en la parte de "Source Code Management" la url de nuestro repositorio de subversion (esto si has leido mis posts anteriores, si no, puedes omitirlo) la cual es "http://localhost/svn/trunk/helloSubversion".


También debemos configurar la opción build triggers donde tenemos varias opciones, seleccionamos la opción "Poll SCM" (SCM es el Subversion) y le indicamos que haga una revisión cada media hora, por lo que escribimos 30 * * * para que Hudson le pregunte a Subversion cada media hora por nuevas actualizaciones.


En la casilla de Build debemos indicarle a Hudson como debe construir el proyecto, Hudson nos da varios mecanismos, sin embargo nosotros usaremos Ant, por lo que seleccionamos "invoke Ant" (Ant debe estar instalado en la máquina del repositorio)

En target debemos especificar los targets definidos en el build.xml del proyecto, generado automáticamente por Netbeans que queremos que Hudson ejecute, por lo que sólo escribimos "compile test javadoc"

Ahora debemos marcar la casilla "generate javadoc" para que la documentación de las clases se actualize automáticamente, sólo debemos pasarle la direccion de la carpeta dentro del proyecto donde queremos que se guarde, en nuestro ejemplo es "helloSubversion/dist/javadoc"

Listo, ahora sólo damos click en save y ya tendremos nuestro primer job guardado. Si regresamos al index de Hudson ("http://localhost:8080") veremos que habrá un listado de todos los jobs que hemos configurado.

Si ahora damos click en nuestro nuevo job (helloHudson) entramos a su panel de administración (por así llamarlo), donde entre otras cosas podemos dar click en el link "build now" con el cual ejecutamos inmediatamente el job (sin esperar los 30 minutos), al hacerlo nos aparecerá una nueva entrada en en el apartado "build history" de la columna izquierda y si damos click en ella entramos al "panel de control" del "build" (por así llamarlos)

Lo más importante de este panel es que podemos revisar cual fue la salida de la consola ya que es muy útil si tenemos algún problema con los builds y no sepamos porque.

Por ejemplo, la salida que obtuvimos con el último build es:

View as plain text
Started by user anonymous
Updating http://localhost/svn/trunk/helloSubversion
At revision 12
no change for http://localhost/svn/trunk/helloSubversion since the previous build
[helloSubversion] $ ant compile javadoc
Buildfile: build.xml

....
....
....

init:

-javadoc-build:
[javadoc] Warning: Leaving out empty argument '-windowtitle'
[javadoc] Generating Javadoc
[javadoc] Javadoc execution
[javadoc] Loading source file /home/alexander/.hudson/jobs/helloHudson/workspace/helloSubversion/src/hellosubversion/Main.java...
[javadoc] Constructing Javadoc information...
[javadoc] Standard Doclet version 1.6.0_13
[javadoc] Building tree for all the packages and classes...
[javadoc] Building index for all the packages and classes...
[javadoc] Building index for all classes...

-javadoc-browse:

javadoc:

BUILD SUCCESSFUL
Total time: 3 seconds
Publishing Javadoc
Finished: SUCCESS


Donde podemos ver que no tuvimos mayor problema.

Bueno, esto fue todo con respecto a Hudson (por ahora), espero que este post les ayude a instalarlo, los anime a explorar un poco más la herramienta y descubran los beneficios que puede brindarnos.

Saludos.


Fuente:
Documentación Oficial: http://wiki.hudson-ci.org/display/HUDSON/Use+Hudson
Un muy buen manual: http://ivanator.wordpress.com/2009/01/12/montando-un-entorno-integracion-continua-hudson-ant-svn-netbeans/


Expandir/Contraer este Post


No hay comentarios: