Instalación de Cruise Control en Windows

De ChuWiki

Instalación en windows[editar]

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