Archivo de la categoria 'Continuous Integration'

Utilizando wildcards de la forma \**\ en CruiseControl.Net

English Version

Esta 煤ltima semana estuvimos trabajando en nuestro Build Server utilizando CruiseControl.Net para permitir la posibilidad de ejecutar m煤ltiples Test / Code Coverage tasks para dos o m谩s soluciones.

Una vez que tenemos configurado el MSBuild Project para ejecutar, por ejemplo, un set de dos o m谩s RunTests / RunCoverage tasks, necesitamos fusionar estos resultados al log de MSBuild luego de su ejecuci贸n.

Entonces, nuestro primer intento fue modificar el archivo ccnet.config para poder fusionar los archivos generados por estas tasks usando el mismo patr贸n utilizado por MSBuild, quiero decir, usando /**/, algo como esto:

<merge>
    <files>
        <file>D:\srv\ccnet\logs\project\**\*.trx</file>
        <file>D:\srv\ccnet\logs\project\**\*.cvg</file>
    </files>
</merge>

En ese momento nos dimos cuenta, que CruiseControl.Net no posee esta funcionalidad, 煤nicamente nos permite la utilizaci贸n de Wildcards de la forma convencional, por ejemplo D:\srv\ccnet\logs\project\theProject\*.trx, y como el c贸digo fuente de CruiseControl.Net est谩 disponible, me puse a escribir algunas l铆neas de c贸digo para modificar el assembly ThoughtWorks.CruiseControl.Core para que nos permita utilizar /**/ como lo hace MSBuild.

En este post van a encontrar el c贸digo fuente de un Spike que escrib铆 con una serie de test para implementar esta funcionalidad y el c贸digo fuente del archivo WildCardPath.cs actualizado que forma parte del Core de proyecto CruiseControl.Net.

  • Solucion Spike con unit tests [Download]
  • El archivo donde se encuentra la clase WildCardPath del assembly Core de CruiseControl.Net [Download]

Una vez actualizado el proyecto Core con esta nueva implementaci贸n, tendr铆an que seguir los siguientes pasos para dejarlo con esta nueva funcionalidad

  1. Compliar el Core Project
  2. Parar el servicio de CruiseControl.Net (ccservice)
  3. Reemplazar el assembly ThoughtWorks.CruiseControl.Core por el Nuevo
  4. Levantar nuevamente el servicio

Y eso es todo, a usar wildcards como en MSBuild :)