2012-06-20 18 views
7

Tengo que reutilizar un proyecto importante de C++ que actualmente se desarrolla dentro de eclipse, utilizando la función de compilación administrada CDT, mingw y cdt (sin archivos makefiles externos ni entorno de compilación). El proyecto en sí está compuesto de muchos subproyectos.Integrar una compilación eclipse/cdt en integración continua

Quiero integrar esa compilación en un servidor de integración continua (jenkins a saber) y así poder automatizar la compilación sin cabeza.

Hasta ahora, he conseguido a la comprobación del proyecto (fácil de Jenkins) y tienen que construir en un modo sin cabeza usando Eclipse, usando el siguiente comando:

C:\prog\EclipseCdt\eclipse -nosplash -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import %WORKSPACE%\project1 -import %WORKSPACE%\project2 -import %WORKSPACE%\project3 -build all 

Es sin embargo no es suficiente:

  • de construcción es asíncrona: comando devuelve anteriores (se bifurca en realidad) mientras esperan que mantenga contexto hasta que tenga un resultado (como lo haría con make en Linux o devenv en las ventanas)
  • No pude extraer los registros de compilación (idealmente los tengo en un archivo): para integrar dentro de mi información continua, necesito poder analizar mis registros de compilación para mostrar información interesante (piense en archivos rotos)
  • Idealmente, Me gustaría obtener de Eclipse un estado directo (código de retorno) que indique aprobado o no aprobado.

¿Alguna idea de cómo tener este comportamiento?

Tenga en cuenta que:

  • usando alternativa (externa) del sistema construir este momento no es una opción (que debe mantener el CDT logrado construir, tiene mucha historia compleja)
  • Ya he mirado en desbordamiento de pila y google y no logró encontrar una manera de hacerlo, a pesar de la aparente simplicidad de mi necesidad
  • Actualmente estoy en Windows 7/mingw 4.5.2/Eclipse IDE para C/C++ Developers Version: Indigo Versión ID de compilación: 20110615-0604 pero creo que la pregunta es x-plataforma

Respuesta

7

parece que si comienzo eclipse de un cmd de forma interactiva, se bifurca, si se inicia desde un script bat, no lo hace. así que poner la línea anterior en jenkins fue suficiente para hacer el truco.

Notas:

  • que necesitan añadir -data parámetro para definir la ubicación de su mesa de trabajo (limpio construir cada vez)
  • como de costumbre, la culpa ventanas y poner comillas ....
  • --launcher.suppressErrors : en caso de que algo suceda, evita que Eclipse muestre una ventana emergente (que en realidad no se muestra, por lo tanto bloquea la compilación)

Final (trabajando!) Comando:

C:\prog\EclipseCdt\eclipse --launcher.suppressErrors -nosplash -data "%WORKSPACE%" -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import "%WORKSPACE%\project1" -import "%WORKSPACE%\project2" -import "%WORKSPACE%\project3" -build all 

EDITAR

  • añadió --launcher.suppressErrors
Cuestiones relacionadas