Actualmente estoy usando jenkins/hudson para la integración continua de un gran proyecto en su mayoría C++. Tenemos proyectos separados para el tronco y cada rama. Además, hay algunos proyectos relacionados para el código de Java, pero la configuración para esos es bastante básica en este momento (sin embargo, podemos hacer más cosas más adelante). Los proyectos de C++, haga lo siguiente:buildbot vs hudson/jenkins para C++ integración continua
- Construye todo con opciones de si se debe volver a configurar, hacer una construcción limpia, o utilizar una copia nueva
- Opcionalmente construye y ejecuta todas las pruebas
- Opcionalmente se ejecuta todas las pruebas usando Valgrind de Memcheck
- ejecuta Cppcheck
- Genera documentación doxygen
- publica informes: las pruebas unitarias, valgrind, cppcheck, las advertencias del compilador, SLOC, tareas abiertas, y la cobertura de código (usando gcov, GCO vr, y el plugin de Cobertura)
- Despliega código de noche o bajo demanda a un entorno de prueba y un repositorio de paquetes
Todo es configurable para automática construye y opcional para la demanda construye. Debajo, hay un script bash que controla gran parte de esto, que además depende de nuestro sistema de compilación, que usa automake y autoconf junto con scripts bash personalizados.
Empezamos a utilizar Hudson (en ese momento) porque eso es lo que los chicos de Java estaban usando y solo queríamos compilaciones nocturnas. Desde entonces, hemos agregado mucho más y seguimos agregando más. En cierto modo Hudson es genial, pero ciertamente no es ideal.
He visto otras soluciones y la única que parece que podría ser un reemplazo es buildbot. ¿Buildbot sería mejor para esta situación? ¿Vale la pena la inversión ya que estamos usando Hudson? ¿Por qué?
EDIT: Alguien me preguntó por qué no he encontrado a Hudson/Jenkins como ideal. La respuesta corta es que todo se puede mejorar. Simplemente me pregunto si Jenkins es la mejor solución actual para mi caso de uso o si hay algo mejor (buildbot?) Que sería más fácil de mantener a largo plazo incluso cuando surjan nuevos requisitos.
No he consultado Buildbot, pero hacemos casi todo lo que menciona en múltiples proyectos de C++ en Hudson. ¿Qué tipo de cosas no ideales ves con Hudson/Jenkins? –
@Soo Wei Tan: ver mi edición. – deuberger
Estamos muy contentos con Jenkins/Hudson hasta ahora. Realmente no nos hemos topado con ningún caso en el que sintiéramos que era inadecuado o deficiente. –