2008-09-28 10 views
19

Cruisecontrol y Hudson son dos populares sistemas de integración continua. A pesar de que ambos sistemas son capaces de hacer las construcciones automáticas continuas de forma agradable, parece mucho más fácil crear una secuencia de comandos de compilación por lotes o bash, luego usar el programador de Windows o cron para programar compilaciones.¿Qué herramienta de integración continua es la mejor para un proyecto de C++?

¿Hay mejores sistemas de integración continua disponibles para proyectos C++? ¿O simplemente está usando un script y un programador de la manera más simple?

+1

Esta pregunta [actualmente se está discutiendo en meta] (http://meta.stackoverflow.com/questions/320141/link-to-a-deleted-question-in-a-book). –

Respuesta

13

Hemos estado usando CruiseControl para CI en un proyecto de C++. Si bien es lo único que usamos para ant, el script de construcción ant para CruiseControl solo inicia nuestro script de compilación normal, por lo que es muy simple y no hemos necesitado actualizarlo en mucho tiempo. Por lo tanto, el hecho de que CrusieControl esté basado en Java realmente no ha sido un problema para nosotros.

Los principales beneficios del uso de algo así como el control de crucero son

  • Una buena página Web de estado que muestra la acumulación
  • correo electrónico después de cada construcción o después de fallado construye
  • construir automáticamente después de una confirmación al control de código fuente sistema
  • Un complemento de Firefox para supervisar el estado de compilación
  • Muestra el resultado de cualquier error de compilación.
  • muestra qué archivos han cambiado desde la última compilación (bueno para ver lo que el desarrollador se rompió buid)

Por supuesto que puede escribir un guión a sí mismo, que hace todo esto, pero ¿por qué hacer todo ese trabajo? A largo plazo, el costo inicial adicional de configurar CruiseControl (o algo similar) es probablemente mucho menor que el costo de mantener y actualizar un script de compilación CI personalizado.

Si todo lo que necesita es iniciar una compilación diaria y un script simple iniciado por cron es suficiente para sus necesidades, entonces hágalo de todos modos. Sin embargo, una de las ventajas de CI es que obtiene un informe de estado de compilación después de cada check in. Escribir un script para hacer eso requiere más trabajo y CruiseControl ya lo hace.

4

Hemos estado usando Dart Dashboard. Es de código abierto, pero impulsado por KitWare. Desde entonces, han cambiado el nombre a CDash, que supongo que todavía es capaz. Estamos realizando varios tipos de pruebas, incluida la integración nocturna y continua en 10 plataformas diferentes, tanto en el modo de depuración como de lanzamiento, así como la ejecución de miles de pruebas de aplicaciones y el informe de los resultados allí también.

2

También puedes probar JetBrains' TeamCity. Es un producto comercial, pero ofrece una licencia gratuita para hasta 20 configuraciones de compilación.

+0

TeamCity está actualmente obligado a la cantidad de configuraciones de compilación, no a las cuentas de desarrollador. – zergius

11

Utilizamos Hudson para CI y SonarQube para métricas de código. Están integrados, y Hudson tiene un puñado de complementos que ningún cronjob puede superar.

Un gran complemento es CI Game, que guarda un puntaje sobre quién rompe las compilaciones y quién se compromete sin romperlo. Hudson tiene complementos para jugar con VMWare, Selenium, SVN, CSV, Git. Tiene sindicación RSS, que puede ayudarte a automatizar aún más todo lo demás.

Hudson es grande ...

+0

Le daré un +1 por Hudson, es mucho más bonito que CC, y también es mucho más fácil de configurar. La funcionalidad es casi idéntica. – gbjbaanb

1

Una de las características interesantes de una herramienta de integración continua (CI) es que la acumulación se dispara cada vez que algo se comprueba en su repositorio de control de código fuente.

Si eso no es algo que necesita, entonces probablemente sea mejor utilizar el programador de tareas de Windows o las tareas cron.

Además, las herramientas de CI también vienen con un panel (web) y capacidades avanzadas de registro.

Su pregunta me parece más "por qué debería usar una herramienta de CI" y luego "qué herramienta de CI debo usar". Si un script por lotes satisface sus necesidades, utilícelo. (Re) crear un entorno de compilación solo se vuelve más fácil si no necesita una herramienta de IC como componente adicional. Si desea una compilación activada por el control de código fuente, un panel, el almacenamiento de resultados de compilación anteriores u otro registro, use una herramienta de CI y evite desarrollar todas esas funciones en los guiones por lotes o de shell.

Cuestiones relacionadas