integracion español entrega despliegue continuo continua c++ qt continuous-integration build-automation

español - Servidor de compilación/recomendación de integración continua para proyectos basados en C++/Qt



jenkins (5)

Estoy buscando implementar un servidor de compilación para proyectos C ++ basados ​​en Qt. El servidor necesita verificar los códigos / activos necesarios de Subversion, compilar los archivos ejecutables, ensamblar los artefactos para los proyectos de instalación y compilar los archivos de medios de instalación. Las plataformas de destino y las cadenas de herramientas (básicas) son:

  • Windows (32 y 64 bits): qmake, nmake, msbuild, wix toolchain. El resultado final es un instalador EXE y una imagen de DVD.
  • Mac OS X: qmake, make, custom bash scripts para ensamblar paquetes. El resultado final es un paquete de aplicaciones dentro de una imagen de disco y una imagen de DVD.
  • Ubuntu (32 y 64 bits): scripts qmake, make, debuild-based. El resultado final es una colección de archivos DEB y una imagen de DVD.
  • Fedora (32 y 64 bits): qmake, make, rpmbuild scripts. El resultado final es una colección de archivos RPM y una imagen de DVD.

Así que eso es al menos 4 agentes de compilación (tal vez más si 32 y 64 bits no se pueden hacer en el mismo cuadro) y 7 configuraciones. Se prefieren proyectos de código abierto, pero eso no es un requisito absoluto.

La mayoría de las herramientas que estoy viendo parecen estar destinadas a Java (Jenkins, CruiseControl, etc.) o .Net (CruiseControl.net, etc.). ¿Se pueden usar con una cadena de herramientas de C ++, o voy a pelear constantemente contra el sistema? ? ¿Algo que hayas usado en el pasado y funcionado bien con Qt / C ++?


La mayoría de las herramientas que estoy viendo parecen estar destinadas a Java (Jenkins, CruiseControl, etc.) o .Net (CruiseControl.net, etc.). ¿Se pueden usar con una cadena de herramientas de C ++, o voy a pelear constantemente contra el sistema? ? ¿Algo que hayas usado en el pasado y funcionado bien con Qt / C ++?

Cualquier sistema de CI razonablemente capaz tendrá una pieza que le permitirá ejecutar cualquier programa que desee para su comando de compilación.

Esto es lo que consideraría:

  • ¿El sistema de CI se ejecuta en su (s) sistema (s) de elección?
  • ¿Te permite una manera fácil de ver tus registros?
  • Se integra con tu corredor de prueba
  • ¿Se integra con los informes de cobertura de código (p. Ej., BullseyeCoverage con C ++ y Qt)?
  • ¿Publicará sus archivos de una manera sensible para sus necesidades?
  • Proporcionará un archivo / almacén de archivos, si es necesario (p. Ej., Pdbs y lib * .so.debug)
  • Si el sistema de CI no admite la característica X, ¿tendrá que escribirla para cada SO / sistema compatible?
  • ¿El sistema de IC / UI es fácil de usar?

Hice lo anterior usando CruiseControl y la mayoría de las cosas fueron bastante fáciles. Escribí todo en make o qmake y simplemente llamé al comando que necesitaba ejecutar. Para la prueba unitaria y la integración de cobertura de código, transfiero material a XML y lo transformo en algo compatible con CruiseControl.

Mi recomendación, eche un vistazo a los sistemas de IC recomendados y examínelos según los criterios anteriores.


Aquí puedes leer un ejemplo rápido:

Servidor de integración continua - Hudson

Creo que vale la pena probar Hudson, Jenkins y Builbot. Perder uno o dos días evaluándolos y probándolos con un ejemplo rápido lo ayudará a elegir con confianza.


Estoy usando buildbot para esto. Lo he usado durante 4 años, y me siento muy feliz con él.

Es una aplicación escrita en python, que se ejecuta en un servidor y puede administrar varios clientes en varios sistemas operativos. Actualmente estoy usando los esclavos de construcción Windows XP, Windows 7, Debian, Ubuntu y CentOS. Mis proyectos son C ++, y uno de ellos (la GUI del usuario final) está hecho en Python. Pero también nos hemos integrado con otros marcos, para otras funciones aparte de la GUI.

Lo que es realmente bueno de buildbot es que funciona ejecutando líneas de comando en esclavos. Con esto, puedes hacer lo que quieras. ¡Incluso en sistemas Windows para compilar usando Visual Studio! Desde estas líneas de comando, obtiene todos los resultados centralizados en el servidor, y accesibles.

También puede encontrar alternativas en este site que hacen referencia a muchas de ellas. Descargo de responsabilidad: Lo miré hace 3 años, no sé si todavía es preciso.


Hudson o Jenkins es bastante bueno.


Uso Jenkins para compilar y empaquetar muchos proyectos C ++, basados ​​en qmake, cmake y makefiles.

Hay plugins para cmake, qmake y msbuild, pero también se pueden ejecutar scripts de línea de comandos.

He hecho el empaquetado usando Jenkins sin problemas, ya que es solo otro paso de línea de comando en un proyecto.

Hay buenos complementos para monitorear el número de warnings/errors producidos por el compilador (normalmente uso GCC).

También tiene compilaciones matriciales que le permiten construir un proyecto varias veces con diferentes combinaciones de indicadores de compilación, variables de preprocesador, plataforma, etc. Un proyecto que configuré es una compilación matricial con 5 indicadores de preprocesador booleanos en dos plataformas, que luego hace 2 ^ 6 = 64 compilaciones Estos pueden tardar un poco en configurarse para ser correctos.