Introducción

 

Una de las cosas que nos ayudan a saber el estado y la calidad de nuestro código fuente es compilarlo y ver que todo es correcto, que el código compila correctamente, que se pasan las pruebas unitarias, que se cumplen las reglas de análisis, etc. Para ello en Team Foundation Server tenemos Team Build, un servidor de compilación que nos permite realizar estas compilaciones de forma periódica para asegurar que el estado y calidad del código que se encuentra en el repositorio es la adecuada.

 

Tipos de compilaciones

 

No existe un numero concreto de tipos compilaciones, pero lo que si recomiendan la mayoría de metodologías actuales es realizar compilaciones lo mas frecuentemente posible. Una de las practicas mas recomendadas en este aspecto es la Integración Continua que consiste en realizar compilaciones cada vez que el código es depositado en el servidor, pudiendo así detectar casi en el momento cualquier fallo que se produzca en la compilación o la ejecución de las pruebas. Esto muchas veces provoca problemas de rendimiento y cuellos de botella dependiendo de las características del servidor de compilación y el tiempo que tarda el código en compilar y ejecutar las pruebas, de ahí que surja el otro tipo de compilación mas conocido, la compilación diaria, aunque en la mayoría de los casos suele ser nocturna. Este tipo de compilación pretende paliar las desventajas de la integración continua, y se suele ejecutar una vez al día, normalmente por la noche, cuando los desarrolladores han depositado todo el código fuente que han hecho durante el día en el servidor.

 

Como he comentado antes no existe un numero concreto de compilaciones o tipos de compilaciones que deben existir en un proyecto aunque quizás podríamos tomar como guía los siguientes tipos:

 

  • Continuous Integration: Se realiza cada vez que un desarrollador deposita código en el servidor y permite detectar rápidamente cualquier problema que surja de la integración del nuevo código con el existente en el repositorio.
  • Daily/Nigthly Build: Se realiza cada noche para verificar que todos el código añadido al servidor a lo largo del día se integra correctamente con el código ya existente.
  • Weekly Build: Se lanza cada semana y al igual que la compilación diaria, comprueba que todo el código subido a lo largo de la semana se integra correctamente y ayuda a evaluar la evolución de la calidad semana a semana.
  • End-of-iterarion Build: Es recomendable también realzar una compilación cada fin de iteración o en cada hito importante del  proyecto para saber que el código que existe en el repositorio cumple las normas de calidad establecidas.

 

Creación de compilaciones con Team Build

 

La creación de los distintos tipos de compilaciones que he comentado antes difiere bastante entre Team Build 2005 y Team Build 2008, así que voy a definir el proceso de creación para cada unas de las versiones por separado y para evitar que este post se haga demasiado extenso voy a crear otros dos posts con los detalles de creación de cada entorno. También deciros que el proceso consta de varias pantallas y solo mostraré las que sean realmente relevantes. Para ir abriendo boca os puedo contar que en ambos casos las Build Types en 2005 y las Build Definitions en 2008, que es como se denominan a los distintos tipos de compilaciones en Team Build, se crean desde el Team Explorer y a través de un asistente se nos van pidiendo los datos necesarios. En la versión 2005 los tipos de compilaciones que definamos deben por fuerza ir almacenados en una carpeta especifica llamada "Team Build" y esto crea una carpeta en el control de código fuente llamada "Build Types". Sin embargo, y esta es una de las diferencias, en la versión 2008 podemos almacenar estas Build Definitions en cualquier carpeta que nosotros queramos dentro de la estructura de nuestro proyecto.