2009-05-15 11 views
15

Miré algunas otras preguntas en SO, y no estoy seguro de que respondan esta pregunta.¿Existe una herramienta para la integración continua multiplataforma (C++ Win32 y Linux)

Estamos construyendo aplicaciones C++ para Win32 y Linux. En este momento tenemos algunos scripts (archivos bat para win32) que se ejecutan en un cronograma para hacer construcciones.

Nos gustaría tener CI para nuestros proyectos, pero me gustaría tener solo un servidor de CI que maneje la construcción en ambas plataformas. La integración con SVN es importante.

¿Es posible tener una configuración/un producto/servidor de CI haciendo esto?

¿Alguien ha hecho esto con éxito? Bamboo parece que podría resolver nuestras necesidades, pero odio incursionar en un gasto como ese como un arranque inicial si podemos evitar el costo.

Respuesta

11

Es posible que desee tener una oportunidad en Hudson o Jenkins. Aunque principalmente para proyectos basados ​​en Java, puede modificarlos para adaptarlos a sus necesidades. Se integran con SVN sin problemas, además de que podría usar la función de compilación muti-paso para llamar a sus archivos por lotes (existentes) y procesarlos más.

+0

¿Puede iniciar compilaciones en ambas plataformas con la misma configuración? – Tim

+0

No exactamente. ¿Pero cómo manejas eso con los archivos .bat? – pugmarx

+1

Crearía dos "proyectos", ambos apuntando al mismo repositorio de CM, pero vinculados a diferentes agentes de compilación, con cada agente de compilación ejecutándose en una plataforma diferente. Muy factible (y bastante fácil). – Jared

4

TeamCity pueden ejecutar agentes de compilación en diferentes plataformas, por ejemplo, un agente de compilación en Windows y otro en Linux. Hay una configuración disponible para especificar a qué agentes de construcción se asigna cada compilación.

TeamCity no es gratuito, como en el habla, pero hay una versión gratuita, como en la cerveza (la Edición Profesional) con algunos límites (3 agentes de compilación, 20 usuarios, 20 configuraciones de compilación).

+0

sí - Estaba viendo eso desde la otra pregunta similar. Puede ser la combinación más cercana. Somos pequeños en este momento y esos límites probablemente funcionen. – Tim

+1

TeamCity es excepcionalmente fácil de usar. Hecho por JetBrains, los creadores del IDEA Java IDE. Experiencia muy suave con un poder excepcional. Todavía doblando mi cerebro en torno al concepto "Build Agent" que permite ejecutar compilaciones en paralelo en servidores distribuidos, y luego cotejar los resultados en un repositorio central. Además, felicitaciones a JetBrains por apoyar una versión de Mac OS X y Linux de TeamCity. – GrahamMc

8

Buildbot es definitivamente una herramienta para mirar - http://buildbot.net/trac. Servidor central que supervisa todos los proyectos y notifica a los agentes de las nuevas tareas para que pueda construir en cualquier entorno que realmente necesite sin configurar un entorno de compilación cruzada.

También puede consultar Cruise Control @http://cruisecontrol.sourceforge.net. Si bien parece que está más orientado a la construcción de java, puede hacer mucho con él. Tengo una configuración que construye linux arm & binarios i386 y los convierte en debs y mantiene un repositorio Debian desde los resultados de compilación - ejecuta pruebas de unidad y todo tipo de cosas en el código ...

Pero lo que realmente quería decir es que Básicamente, casi todos los software de servidor ci que he utilizado son principalmente solo "programadores de tareas" y aún necesita construir/configurar el entorno de compilación, que es, al menos en escenarios multiplataforma, tareas más grandes que configuran un software que ejecuta las compilaciones y produce buenos informes de ellos ...

+1

Buildbot es increíble, muy extensible y muy valioso. Nunca he visto el control de crucero ni nada por el buildbot que nunca he tenido :-). –

+0

De hecho, Buildbot es exactamente eso, muy extensible pero con eso, también es un poco más difícil de configurar para la persona promedio donde el control de crucero no es tan difícil de configurar pero en la mayoría de los casos carece de características a menos que aplique el código usted mismo. Personalmente he ejecutado ambos y ambos tienen sus ventajas, que dependen caso por caso =) – rasjani

+0

BuildBot es excelente para proyectos multiplataforma. Mire Mozilla, Webkit y muchos otros. – Macke

4

Utilizamos Zed Builds and Bugs para esto y funciona muy bien para nosotros. Hay un solo servidor central en el que configura su definición de compilación. Luego, para cada "paso" en la construcción completa, puede definir en qué servidor se ejecutará ese "paso". Tenemos pasos que se ejecutan en: Win32, Linux64, Linux32, HP, AIX, Solaris e incluso los pasos que se realizan en todo el mundo para la ejecución remota.

Cada uno de los pasos se puede configurar para que se ejecute en paralelo o en serie, por lo que cuando HP, AIX, Solaris y Linux hacen lo mismo, todos pueden ejecutarse en paralelo y el seguimiento de Win32 esperará hasta que todo termine antes de continuar.

También puede configurar procesos secundarios y luego iniciarlos desde la compilación "maestra" para que pueda crear subprocesos de compilación más complicados que se ejecutarán independientemente unos de otros, pero todos unidos mediante la definición de compilación maestra.

No es gratis, pero la cantidad de tiempo que nos ha ahorrado (yo en particular) ha pagado bien el costo del software muchas veces.

Cuestiones relacionadas