Desplegando en Tomcat un proyecto web con Hudson.
1. Introducción
Desde Autentia siempre hemos hecho hincapié en la importancia de utilizar herramientas de integración continua como Hudson. Por tanto, no voy a volver a comentar la importancia de este tipo de herramientas en nuestro día día. Lo que queremos con este tutorial es enseñaremos la forma de desplegar nuestra aplicación web en un servidor Tomcat cuando Hudson ha finalizado la build. No vamos a entrar en cómo se instala Hudson ya que se explicó en el tutorial «Cómo instalar Hudson en Apache Tomcat«.
La gran ventaja de Hudson es su extremada sencillez y la gran cantidad de plugins que nos ofrece para realizar multitud de tareas sobre nuestro proyectos. Entre todos ellos encontramos un plugin que nos permite desplegar remotamente nuestras aplicaciones en los siguientes servidores: Tomcat 4.x/5x/6x, Jboss 3x/4x/5x y GlassFish. Su nombre es «Deploy Plugin» e internamente utiliza la librería de Cargo 1.0 para realizar esta tarea.
Para el resto de servidores tendremos que utilizar otras técnicas. Por ejemplo, Hudson ofrece un plugin específico para el despliegue en WAS (Deploy WebSphere Plugin), para el resto tendríamos que hacerlo a través de un Shell Script lanzado por ejemplo con el plugin «Batch Task Plugin».
¿Para qué sirve desplegar nuestra aplicación en un servidor después de que haya finalizado Hudson la contruscción del proyecto?. Principalmente sirve para que podamos lanzar test de regresión a nuestra aplicación y así tener una certeza de que la build generada funciona correctamente.
En nuestro caso vamos a utilizar «Deploy Plugin».
2. Instalación de «Deploy Plugin».
Hudson permite instalar los plugins de una forma sencilla y rápida. Sólo tendremos que acceder a la opción «Administrar Plugins» que aparece cuando pulsamos sobre «Administrar Hudson» del menú izquierdo.
Una vez que hayamos accedido a la opción «Administrar Plugins» nos aparece una tabla con cuatro pestañas.
- – Actualizaciones disponibles: muestra nuevas versiones de los plugins que tenemos instalados. Si la versión del plugin necesita de una versión más moderna de Hudson, la aplicación muestra un mensaje de advertencia en el que nos indica qué versión de Hudson tenemos que tener instalada para usar ese plugin.
- – Todos los plugins: vemos todos los plugins que pueden ser instalados.
- – Plugins Instalados: se ve un listado de los plugins actualmente instalados.
- – Configuración avanzada: con esta opción podemos subir plugins que no se encuentran en el repositorio oficial de Hudson, configurar un proxy para aquellas organizaciones que no tienen acceso directo a Internet y cambiar la url que Hudson utilizara para conocer si existen nuevas versiones de plugins.
En el caso de que no tengamos instalado el plugin «Deploy Plugin» tendremos que irnos a la pestaña Todos los Plugins, seleccionar «Deploy Plugin» y pulsar sobre en el botón «Instalar«.
A continuación, Hudson descarga e instala el plugin automáticamente. Cuando haya finalizado este proceso debemos reiniciar el servidor donde tengamos desplegado Hudson.
3. Configurando nuestro proyecto Hudson para el despliegue.
Finalizado el proceso de instalación, configurar nuestro proyecto para que sea desplegado en un servidor remoto es realmente sencillo. Accedemos al proyecto que queremos desplegar, pulsamos sobre el enlace «Configurar» y si el plugin se ha instalado correctamente nos aparecerá en el apartado «Acciones para ejecutar después» una nueva opción «Deploy war/ear to a container».
Si activamos esta opción vemos la siguiente información:
En el campo «WAR/EAR files» debemos indicar que ficheros vamos a desplegar en el servidor. Para ello utilizaremos expresiones del estilo **/*.war. Indicar que esta expresión es relativa al root de nuestro proyecto.
Una vez que hayamos configurado que ficheros se van a desplegar debemos elegir el servidor donde vamos a desplegarlo. Como hemos comentado antes, este plugin nos permite desplegar aplicaciones en Tomcat 4x/5x/6x, Jboss 3x,4x/5x y Glassfish 2x. En nuestro caso elegimos Tomcat 6x y rellenamos los datos del usuario que tiene permisos para realizar despliegues en el servidor y la url donde se encuentra escuchando.
Y la última opción «Deploy on failure» no permite desplegar la aplicación incluso si la build que ha generado Hudson ha fallado.
4. Conclusión.
Como habéis podido comprobar el despliegue de nuestra aplicación en un servidor remoto utilizando Hudson es muy sencillo. Ahora no tenemos ninguna excusa para desplegar nuestra aplicación en nuestro servidor para posteriormente lanzar nuestros test de regresión y comprobar que todo funciona correctamente después de que Hudson haya generado la build.