2010-02-22 13 views
21

Estoy buscando implementar un sistema de prueba de unidad continua, algo que he escuchado llamar "prueba de fuga" o "tinderbox" (un servidor de compilación que realiza comprobaciones de control de versiones limpias y compilaciones completas de todo en una fuente determinada repositorio o proyecto), y algo así como "integración continua" para equipos pequeños, con Delphi.Automatización de compilación de Delphi e integración continua factible utilizando MS Build solamente?

No me gusta comprometerme con un producto comercial de "servidor de compilación" y espero poder hacer mucho de esto solo con el soporte de MS-Build que está integrado en Delphi.

Estoy buscando recursos, ideas y un lugar para comenzar. No sé cómo usar MS Build para este propósito. Steve Trevethen tiene una publicación de blog que da lugar a una pequeña discusión sobre la antigua compilación de línea de comando dcc32, y algunos comentarios mencionan ms-build que ha estado aquí desde delphi 2007. Estoy usando Delphi 2010. Estoy buscando orientación, conocimiento y experiencias , eso me dirá, ¿es este un camino razonable para bajar, y si no, qué camino debería seguir?

Encontré que puede anular la Unidad (DCU) y el Directorio de salida EXE desde la línea de comando msbuild con/p: DCU_DcuOutput =. Tenga en cuenta que miré el XML dentro de mis archivos DPROJ para descubrir cómo anular las cosas.

Sin embargo, sólo hace un maquillaje, no una acumulación, y/t: reconstruir no funciona (edit:.. Sí lo hace funciona muy bien en los archivos DPROJ, pero no en GroupProjects)

Deseo había más documentación de MSBuild-con-Delphi en cualquier parte? La ayuda de MS-Build en la documentación del producto "Rad Studio 2010" muestra una o dos cosas sobre MS-Build pero es muy incompleto e incompleto.

preguntas relacionadas:

MSBuild command lines

+0

Offtopic, pero utilizamos los makefiles de Cygwin y dcc32 para cosas como esta. La razón es que la mayoría de nuestros proyectos tienen raíces en Delphi 5 y en el mundo anterior, así que nos limitamos a lo que sabemos ... pero funciona bien y es gratis. –

+0

'/ t: rebuild' hace una compilación completa para mí, con Delphi 2009 en archivos dproj, ¿ha intentado ejecutar msbuild en dproj en lugar de groupproj? http://stackoverflow.com/questions/1773546/how-can-i-get-msbuild-to-do-a-full-build-of-a-delphi-project-equivalent-to-dcc32/1774169#1774169 – jasonpenny

+0

Pruebe las herramientas de mingw, le ahorra muchos problemas de ruta en comparación con cygwin/msys. Desafortunadamente, mingw parece haber dejado de construir coreutils. –

Respuesta

15

Delphi 2010 utiliza MSBuild ya que es principal motor de generación. Eso significa que el IDE y la línea de comando hacen exactamente lo mismo. También significa que puede construir fácilmente proyectos existentes con la línea de comando. De hecho, nosotros en el equipo de Delphi hacemos esto exactamente todo el tiempo. No necesita preocuparse por los conmutadores para el compilador en sí - el archivo DProj creado por el IDE será

En el Menú de Inicio hay una línea de comando para usar MSBuild con un proyecto Delphi existente. Se configura el entorno correctamente, de modo que sólo tiene que llamar:

myproject.dproj msbuild

También puede llamar configuraciones de construcción específicos de la línea de comandos, utilizando el IDE para crear fácilmente dijo configuraciones usando parámetros de línea de comandos para MSBuild.

Si desea crear el entorno usted mismo, puede ejecutar el archivo por lotes rsvars.bat para configurarlo. Ese archivo se puede encontrar en su directorio \ bin, y debe estar disponible desde una línea de comando predeterminada.

El archivo contiene lo siguiente:

@SET BDS=<your BDS directory> 
@SET BDSCOMMONDIR=C:\Users\Public\Documents\RAD Studio\7.0 
@SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v2.0.50727 
@SET FrameworkVersion=v2.0.50727 
@SET FrameworkSDKDir= 
@SET PATH=%FrameworkDir%;%FrameworkSDKDir%;%PATH% 
@SET LANGDIR=EN 

Por lo tanto, si usted desea crear su propia estructura de integración continua, se pueden manejar fácilmente su construcción Delphi utilizando MSBuild.

+1

Hasta aquí todo bien, pero en algún lugar está documentado que para hacer una compilación en lugar de una recompilación, debería usar/t: rebuild. ¿Alguna idea de lo que es la bandera para forzar una construcción en lugar de una verificación de dependencia (es decir, hacer)? –

+0

Parece que/t: la reconstrucción funciona, pero solo con .dproj pasado a msbuild, no a grupos de proyectos. Lo cual está bien. Solo un poco más cortándome y pegándome. –

+0

Lars ha observado que/t: Build funciona para .GroupProj mientras que its/t: Rebuild para archivos .dproj. Excéntrico, pero viable. –

11

dproj y groupproj son archivos msbuild y puede verlos dentro de ellos. Las otras partes de la información se encuentran en la ruta de instalación de msbuild (C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727).Allí encontrará varios archivos Borland. *. Targets.

Dentro de los scripts msbuild puede ver los diferentes destinos nombrados con. Por ejemplo, groupfile contiene los objetivos Make, Clean y Build que puede especificar con el parámetro/t. Lo mismo ocurre con los archivos dproj. Los archivos dproj también tienen un objetivo ReBuild. Hace un Limpio y luego una Construcción. Si desea tener el mismo efecto para groupfile, puede especificar dos objetivos:/t: Clean; Build

También encontrará muchos parámetros en los que puede establecer con/p. Como por ejemplo Configuración para especificar la configuración o DCC_Quiet para ordenar a dcc32 que deje de generar espacios en blanco inútiles.

Así que hacer una construcción con la configuración de lanzamiento desde la línea de comandos es la siguiente comando:

msbuild mygroup.groupproj /p:Configuration=Release /t:Build 

exención de responsabilidad: He mirado en los archivos msbuild de Delphi 2007. Posteriores versiones de Delphi podrían haber cambiado el nombre de los objetivos o parámetros. Solo eche un vistazo a los scripts de msbuild para saber cuál es cuál.

+1

Es muy útil saber que puede hacer/t: Desarrollar en un groupproj –

+0

@ldsandon: sí, el RAD y la documentación no van bien juntos ... – mjn

+1

@ldsandon: Microsoft es responsable de documentar MSBuild; después de todo, es su producto. Tal vez debería consultar su sitio web - [MSDN] (http://msdn.microsoft.com) para la [referencia de MSBuild] (http://msdn.microsoft.com/en-us/library/0k6kkbsd.aspx)? –

4

No estoy seguro de si esto es lo que necesita, pero tengo CruiseControl.NET configuración para realizar integración continua - y pruebas DUnit - para Delphi 2009. CCNET tiene un conjunto específico de tareas para MSBuild, y aparte de algunas configuraciones problemas, funciona perfectamente para mí.

Te puedo decir lo que tengo que hacer para que funcione si lo necesitas.

Marca

+0

¿Has probado con TeamCity también? Tiene una licencia 'Profesional' gratuita. – mjn

+0

Estoy interesado en CruiseControl.NET. Por favor, publique un enlace a cualquier información "Delphi with CruiseControl.NET" que tenga. –

+0

Puedes mirar en mi blog, creo que hay algo allí. Si no, definitivamente puedo agregar algo, ya que acabo de actualizar a la última versión. – Mmarquee

Cuestiones relacionadas