Integración continua con Open Source en el mundo .Net

Actualmente tengo a cargo un proyecto en el que somos 13 desarrolladores en distintos lugares de Argentina y en Colombia. Por esta razón, lo primero que pensé es en armar un servidor de integración continua. Cuando lo planteé, la condición fue que no debía requerir licencias de software (salvo la de Windows). No tenía mucho tiempo para esta tarea así que fui a lo conocido: CruiseControl.Net, Subversion, MSBuild, NUnit, Wix, TortoiseSVN y un sin fin de scripts, xslts y herramientas propias.

image

Hasta ahora lo que tengo armado es lo siguiente:

  1. CC.Net verifica cada 60 segundo si han habido cambios en la rama de desarrollo o en la de release
  2. si hubieron cambios, baja a un directorio del servidor la última versión del código del branch que acusa cambios
  3. solicita a subversion el número de revisión del código que descargó y actualiza el archivo VersionInfo.cs con el número de revisión en AssemblyVersion y en AssemblyFileVersion
  4. Compila todos los proyectos .csproj de los directorios Code y Tests
  5. Corre las pruebas unitarias
  6. Crea los scripts de bases de datos a partir de los scripts en los proyectos de bases de datos .dbproj (este es un punto de interés ya que no contamos con VS2010 en el servidor)
  7. Crea los instaladores de bases de datos y del proyecto web
  8. Copia estos instaladores en una carpeta cuyo nombre depende de la versión del código (ver la imagen de abajo). Estas carpetas están publicadas carpetas virtuales “browseable” de manera que cualquiera pueda descargarse los instaladores via http
  9. envía los mails a quienes corresponda según la configuración para cada rama. Es decir, si es sobre la rama de release avisa al project leader y a quality control mientras que si es sobre la rama de desarrollo el esquema es bastante mas complejo.
  10. cuando se trata de la rama de release, el listado de defectos arreglados se obtiene de aplicar una transformación XSL al log del SVN buscando los comentarios que comienzan con BUGFIX# y se publica en CC.Net relacionado a la versión del buid (solución del hombre muy pobre)

Por otra parte, en las máquinas de desarrollo, impedimos la realización de commits con el build roto y sin comentarios mediante dos scripts que se engancha en el pre-commit hook de TortoiseSVN y se ejecutan justo antes de hacer el commit. el primero simplemente consulta a CC.Net sobre el estado del build y advierte si este está roto. el segundo simplemente advierte cuando se intenta hacer commit sin un comentario.

image

Lo continuaré.

Sin categoría

7 thoughts on “Integración continua con Open Source en el mundo .Net

  1. bonito se ve, pero y puedes compartir como lo has hecho en detalle, porque suena una buena solución pero hay que probarla para estar seguros.

    gracias por el dato esta interesante

  2. buen post, no has probado TeamCity? va muy bien con SVN y los productos que mencionas, además que es de unos cracks como JetBrains con lo que la calidad está garantizada 😀

    Salu2

  3. sí bruno, he probado TeamCity y está buenísimo. El tema es que no sabía el tamaño del equipo y si mañana eramos más de 20 iba a tener que pedir que compraran la licencia y entonces a lo mejor me metía en problemas.

  4. Lucas por curiosidad, ¿Cuanto tiempo te ha llevado motar todo esto?
    Yo lo mente hace tiempo en un proyecto parecido al que me cuentas, y le tube que dedicar mucho tiempo, tanto a montarlo como a mantenerlo.

  5. Andréchi, se me hace dificil decirlo con precisión porque lo hice varias veces y por eso es que no partí desde cero. Y además le fuí agregando cosas de a poco. Pero calculo que montar ccnet para que solo compilase ante un commit y enviase emails me puede haber llevado un dia luego sí, es como vos comentas, lleva tiempo. Pero también es cierto que hoy difícilmente podríamos trabajar sin esto.

  6. Hay un error grave en la configuración. Si impides realizar «commits» cuando el «build» está roto no vas a poder corregirlo en muchos casos, por ejemplo: fallo en la «build» porque falta un fichero.

Responder a anonymous Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *