Instalación de Cruise Control en Windows
Instalación en windows[edit]
Me bajé el instalable fácil de http://cruisecontrol.sourceforge.net/. En concreto de http://sourceforge.net/project/showfiles.php?group_id=23523&package_id=16338&release_id=412369.
La instalación fué sencilla. Darle y ya está. Ponerlo en marcha fué algo más complejo.
Primero cree en un sitio un directorio de trabajo para Cruise Control, donde él pondrá los fuentes y hará los compilados. En mi caso
mkdir C:\CRUISE_CONTROL
Luego, a mano, hay que crear una serie de directorios
cd C:\CRUISE_CONTROL mkdir checkout mkdir logs mkdir artifacts
Finalmente, dentro de checkout, a mano saqué de CVS un proyecto que tuviera un build.xml de ant que fuera capaz de compilarlo todo o un proyecto maven con su pom.xml
cd C:\CRUISE_CONTROL\checkout set CVSROOT=mi_cvs_root cvs co MI_PROYECTO
Otra cosa que tuve que hacer, que no sé si es la forma correcta pero a mi me funcionó, fué buscar un directorio webapp en la instalación de Cruise Control, que creo que anda dentro de un directorio doc. Ese directorio completo lo copie con todo su contenido en mi directorio de trabajo
cd C:\CRUISE_CONTROL copy C:\instalacion_cruise_control\doc\webapp .
es posible que ese copy no funcione, pero lo hice desde un explorador de ficheros de windows.
Finalmente, los ficheros de configuración.
En el directorio de trabajo copie un fichero config.xml de la documentacion de Cruise Control. Tuve que eliminar las lineas de currentbuildstatusbootstrapper, currentbuildstatuspublisher del fichero y descomentar la de listeners que está comentada.
<cruisecontrol> <!-- Nombre del proyecto. buildafterfailed indica si debe intentar recompilar o no después de un fallo, aunque no haya cambios en cvs --> <project name="NOMBRE_PROYECTO" buildafterfailed="false"> <!-- Aqui se indica que debe cambiar para provocar el recompilado del proyecto. quiteperiod es cuanto tiempo en segundos despues de un cambio no debe haber cambios para empezar el compilado, la intencion es no empezar a compilar mientras los cambios estan a medias --> <modificationset quietperiod="120"> <cvs localworkingcopy="checkout/NOMBRE_PROYECTO"/> </modificationset> <!-- Cosas que se deben hacer antes de compilar. En este caso un update de CVS de todo el proyecto --> <bootstrappers> <cvsbootstrapper localWorkingCopy="/CRUISE_CONTROL/checkout/NOMBRE_PROYECTO"/> </bootstrappers> <!-- Cada cuanto tiempo hay que mirar si hay cambios en segundos y tarea que hay que realizar cuando haya cambios. En este caso compilado con maven --> <schedule interval="3600"> <maven2 mvnscript="c:\maven-2.0.4\bin\mvn.bat" pomfile="/CRUISE_CONTROL/checkout/NOMBRE_PROYECTO/pom.xml" goal="clean install"/> </schedule> <!-- Cual es el directorio donde se deben dejar los logs del compilado --> <log dir="logs/NOMBRE_PROYECTO"/> <!-- Que hay que hacer cuando termine el compilado. En este caso se dice que se envie un email a cierta persona en caso de que falle el compilado --> <publishers> <email buildresultsurl="http://servidor.com:8080/buildresults/NOMBRE_PROYECTO" mailhost="servidor_smtp" username="usuario_smtp" password="password_smtp" returnaddress="micorreo@servidor.com"> <failure address="destinatario@servidor.com"/> </email> </publishers> <!-- Fichero que contiene el estado del compilado y que mira periodicamente el mini-servidor web que se monta cruise control, para presentarlo en el navegador --> <listeners> <currentbuildstatuslistener file="logs/NOMBRE_PROYECTO/buildstatus.txt"/> </listeners> </project> </cruisecontrol>
Como el proyecto que elegí es de maven, no me hizo falta crear un build-MI_PROYECTO.xml para ant como pone la documentación.
Una vez configurado todo, en el directorio de trabajo arranqué la aplicación cruisecontrol.bat que está en el directorio de instalación
cd C:\CRUISE_CONTROL C:\instalacion_cruise_control\cruisecontrol.bat
Esto lo puso en marcha y comenzó la primera compilación. Desde el navegador, mirando en http://localhost:8080 puede ver los resultados de la compilación. Los resultados de compilación se ven en un .jsp del navegador. Sin embargo, no hace falta tener instalado Tomcat ni nada parecido. Cruise Control viene con Jetty, un servidor de jsp ligero y que por ello viene integrado con muchas aplicaciones que lo necesitan. De ahí la necesidad de copiar el webapp en el directorio de trabajo.
Un buen enlace para comprender el fichero de config.xml es http://www.pragmaticprogrammer.com/starter_kit/au/scheduled.pdf que aunque viene en inglés, explica bastante bien lo mínimo para entender el config.xml