Los proyectos .NET desarrollan la automation con NAnt / MSBuild + SVN

desde hace bastante time, he estado tratando de descubrir cómo configurar un process de construcción automatizado en nuestra tienda. He leído muchas publicaciones y guías sobre este tema y ninguna de ellas realmente se ajusta a mis necesidades específicas.

Mi repository SVN se presenta de la siguiente manera

\projects \projectA (a product) \tags \1.0.0.1 \1.0.0.2 ... \trunk \src \proj1 (a VS C# project) \proj2 \documentation 

Luego tengo un recurso compartido de networking, con una carpeta para cada proyecto (producto), que a su vez contiene los files binarys, la documentation escrita y la documentation API generada (a través de NDoc, cada proyecto puede tener un file .ndoc en el repository) para cada historial versión (desde la carpeta SVN de tags ) y también para la última versión (desde el enlace troncal ).

Básicamente, lo que quiero hacer en una compilation por lotes progtwigda son estos pasos:

  1. examinar la carpeta SVN del proyecto e identificar las tags no presentes en el recurso compartido de networking
  2. para cada una de estas tags
    1. echa un vistazo a la carpeta de tags
    2. compilation (con Release config)
    3. copyr los binarys resultantes al recurso compartido de networking
    4. search files .ndoc
    5. generar files CHM a través de NDoc
    6. copyr los files CHM resultantes al recurso compartido de networking
  3. hacer lo mismo que en 2., pero para la revisión HEAD del tronco

Ahora, el problema es que no tengo idea de dónde empezar. No guardo files .sln en el repository, pero puedo replacelos con files MSBuild que a su vez crean los proyectos C # que pertenecen al producto específico.

Supongo que la parte más problemática es el examen del repository de tags que aún no se han procesado, es decir, search las tags y compararlas con la estructura de directorys de un proyecto en el recurso compartido de networking. No tengo idea de cómo hacerlo en cualquiera de las herramientas de compilation (NAnt, MSBuild).

¿Podrían darme algunos consejos sobre cómo abordar esta tarea como un todo y en detalle también? No me importa si uso NAnt, MSBuild o ambos. Soy consciente de que esto puede ser bastante complejo, pero cada idea y fragment de NAnt / MSBuild te será de gran ayuda.

Gracias por adelantado.

En NantContrib hay un command SVN que puede usar para get información. Cualquier consulta que pueda ejecutar desde la línea de command SVN que debería poder usar y luego analizar el resultado. Por lo tanto, podría hacer una búsqueda de tags, unir las tags a las carpetas de su recurso compartido de networking, y luego realizar una comprobación de las que faltan utilizando el command svn-checkout. Una vez hecho, ejecute el command msbuild para cada carpeta de proyecto.

Una alternativa si desea tener comstackciones automatizadas sería crear una twig en lugar de una label, ya que parece que está creando versiones frente a solo una label. Si crea una sucursal, puede tener una herramienta de compilation automática como CruiseControl.net o TeamCity para supervisar su repository. Luego, si un file está registrado en la Sucursal o Troncal, puede hacer que inicie su compilation automatizada.

Entre los dos deberías ser capaz de manejarlo. Si desea un buen ejemplo de algunos scripts de compilation que tienen la documentation implementada en ellos (con zip y distribución), consulte el Proyecto del Castillo aquí: http://www.castleproject.org/

Incluso usan algunos de los commands SVN para get cosas como el número de revisión y lo que no para la generación automática de los files de información de assymbly.

UppercuT podría ser un gran recurso para search fragments de NAnt.

http://projectuppercut.org/

Algunas buenas explicaciones aquí: UppercuT

¿Puede hacer que NAnt o MSBuild invoquen un perl u otro script de lenguaje de scripting para examinar el repository de svn y realizar el pago? Si puede ejecutar la compilation desde la command-line también, parece que todo lo demás es más secuencias de commands.