.net svn msbuild build-automation nant

Los proyectos.NET desarrollan la automatización con NAnt/MSBuild+SVN



build-automation (3)

¿Puede hacer que NAnt o MSBuild invoquen un perl u otro script de lenguaje de scripting para examinar el repositorio de svn y realizar el pago? Si puede ejecutar la compilación desde la línea de comandos también, parece que todo lo demás es más secuencias de comandos.

desde hace bastante tiempo, he estado tratando de descubrir cómo configurar un proceso 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 repositorio 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 red, con una carpeta para cada proyecto (producto), que a su vez contiene los archivos binarios, la documentación escrita y la documentación API generada (a través de NDoc, cada proyecto puede tener un archivo .ndoc en el repositorio) para cada historial versión (desde la carpeta SVN de etiquetas ) y también para la última versión (desde el enlace troncal ).

Básicamente, lo que quiero hacer en una compilación por lotes programada son estos pasos:

  1. examinar la carpeta SVN del proyecto e identificar las etiquetas no presentes en el recurso compartido de red
  2. para cada una de estas etiquetas
    1. echa un vistazo a la carpeta de etiquetas
    2. compilación (con Release config)
    3. copiar los binarios resultantes al recurso compartido de red
    4. buscar archivos .ndoc
    5. generar archivos CHM a través de NDoc
    6. copiar los archivos CHM resultantes al recurso compartido de red
  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 archivos .sln en el repositorio, pero puedo reemplazarlos con archivos 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 repositorio de etiquetas que aún no se han procesado, es decir, buscar las etiquetas y compararlas con la estructura de directorios de un proyecto en el recurso compartido de red. No tengo idea de cómo hacerlo en cualquiera de las herramientas de compilación (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 fragmento de NAnt / MSBuild te será de gran ayuda.

Gracias por adelantado.


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

Una alternativa si desea tener compilaciones automatizadas sería crear una rama en lugar de una etiqueta, ya que parece que está creando versiones frente a solo una etiqueta. Si crea una sucursal, puede tener una herramienta de compilación automatizada como CruiseControl.net o TeamCity para supervisar su repositorio. Luego, si un archivo está registrado en la Sucursal o Troncal, puede hacer que inicie su compilación automatizada.

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

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