¿Qué herramienta de integración continua es mejor para un proyecto C ++? [cerrado]

StackOverflow https://stackoverflow.com/questions/145586

  •  02-07-2019
  •  | 
  •  

Pregunta

Cruisecontrol y Hudson son dos sistemas populares de integración continua. Aunque ambos sistemas son capaces de realizar compilaciones continuas automatizadas de manera agradable, parece mucho más fácil crear un script de compilación por lotes o bash, luego usar el programador de Windows o cron para programar compilaciones.

¿Hay mejores sistemas de integración continua disponibles para proyectos C ++? ¿O es simplemente usar un script y un planificador la forma más simple?

¿Fue útil?

Solución

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

Los principales beneficios de usar algo como el control de crucero son

  • Una buena página web que muestra el estado de compilación
  • Correo electrónico después de cada compilación o después de compilaciones fallidas
  • Generar automáticamente después de un compromiso con el sistema de control de origen
  • Un complemento de Firefox para monitorear 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 qué desarrollador rompió la construcción)

Por supuesto, usted mismo puede escribir un guión que haga todo esto, pero ¿por qué funciona todo eso? A la larga, 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 de 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 todas maneras. Sin embargo, una de las ventajas de CI es que obtiene un informe de estado de compilación después de cada registro. Escribir un script para hacerlo requiere más trabajo y CruiseControl ya lo hace.

Otros consejos

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 mantiene 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 ayudarlo a automatizar aún más todo lo demás.

Hudson es genial ...

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 tan capaz. Estamos realizando varios tipos de pruebas, incluida la integración nocturna y continua en 10 plataformas diferentes, tanto en modo de depuración como de liberación, así como también ejecutamos miles de pruebas de aplicaciones e informamos los resultados allí también.

He estado usando Buildbot para el Proyecto Spring RTS realizado con éxito.

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

Una de las características interesantes de una herramienta de integración continua (CI) es que se activa una compilación cada vez que se registra algo en el repositorio de control de código fuente.

Si eso no es algo que necesita, probablemente sea mejor que use el programador de tareas de Windows o los trabajos cron.

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

Su pregunta me parece más "porque usaría una herramienta de CI" entonces " qué herramienta de CI debería 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 CI como componente adicional. Si desea una compilación activada por control de código fuente, un tablero, almacenamiento de resultados de compilación antiguos u otro registro, use una herramienta de CI y evite desarrollar todas esas funciones en scripts por lotes o shell.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top