tutorial software para integracion informatica español continua c++ continuous-integration hudson jenkins buildbot

c++ - software - jenkins tutorial pdf español



buildbot vs hudson/jenkins para la integración continua en C++ (3)

Ambos son proyectos de código abierto, pero no es necesario cambiar el código del buildbot para "ampliarlo", de hecho es bastante fácil importar sus propios paquetes en su configuración en la que puede subclasificar la mayoría de las características con sus propias adiciones. Ejemplos: su propio código de compilación o prueba, algunos análisis de salidas / errores que se darán a los próximos pasos, su propio formato de correos electrónicos de alerta, etc., hay muchas posibilidades.

En general, diría que buildbot es la herramienta de construcción automática más "general". Sin embargo, Jenkins podría ser el mejor relacionado con la ejecución de pruebas, especialmente para analizar y presentar resultados de forma agradable (resultados, detalles, gráficos ... algunos clics de distancia), cosas que buildbot no hace "out-of-the-box". De hecho, estoy pensando en usar ambos para tener páginas de resultados de prueba más sexys .. :-)

Además, como regla general, no debería ser difícil crear una nueva configuración de herramienta: si la especificación de qué hacer (configuraciones, compilaciones, pruebas) es demasiado difícil cambiar de una herramienta a otra, es un signo (incorrecto) que no hay suficientes scripts de configuración movidos a las fuentes. Buildbot (o Jenkins) solo debe llamar a comandos simples. Si es simple ejecutar pruebas, los desarrolladores también lo harán y esto mejorará la tasa de éxito, mientras que si solo el sistema de integración continua ejecuta las pruebas, se ejecutará para corregir las fallas del nuevo código y se perderá. su valor de no regresión, solo mi 0.02 € :-)

Espero que ayude

Actualmente estoy usando jenkins / hudson para la integración continua de un gran proyecto mayormente en 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 ++ hacen lo siguiente:

  • Construye todo con opciones para reconfigurar, hacer una compilación limpia o usar un checkout nuevo
  • Opcionalmente crea y ejecuta todas las pruebas
  • Opcionalmente, ejecuta todas las pruebas con la validación de Valgrind
  • Ejecuta cppcheck
  • Genera documentación doxygen
  • Publica informes: pruebas unitarias, valgrind, cppcheck, advertencias del compilador, SLOC, tareas abiertas y cobertura de código (usando gcov, gcovr y el plugin de cobertura)
  • Implementa el código cada noche o a pedido en un entorno de prueba y un repositorio de paquetes

Todo es configurable para versiones automáticas y opcionales para versiones bajo demanda. 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 usar 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é?

EDITAR : 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.


Hay muchas otras soluciones, además de Jenkins / Hudson / BuildBot:

  • TeamCity por Jetbrains
  • Bamboo por Atlassian
  • Ir por Thoughtworks
  • Cruise Control
  • OpenMake Meister

Los detalles sobre lo que está haciendo no son tan importantes, de hecho, siempre y cuando los agentes (nodos conocidos) en los que los está ejecutando respalden esas tareas.

La belleza de un servidor de CI es notar cuándo la construcción cambia para activar una nueva compilación (y prueba), publicar los artefactos y publicar los resultados de las pruebas.

Cuando compare herramientas de CI como las que mencionamos, considere características como la usabilidad de su interfaz, qué tan fácil es la bifurcación (y características que podría ofrecer como fusión automática), notificaciones (como XMPP / jabber) o un radiador de información (como enganche un monitor para mostrar siempre el estado). El soporte del producto es otra cosa a considerar: el soporte de Jenkins es tan bueno como el de quién responde las preguntas de la comunidad en el momento en que tiene preguntas.

Mi favorito personal es Bamboo, pero viene con una tarifa de licencia.


La ''integración del resultado'' también está en jenkins / hudson, y usted puede capturar productos de construcción de manera relativamente fácil sin tener que ''copiarlos en otro lugar''.

Para nuestra instancia, los informes de cobertura y las métricas de pruebas unitarias y javadoc para el código Java están todos integrados. Para nuestro código C ++, los complementos son un poco insuficientes, pero aún puede obtener la mayor parte.

ejecutamos buildbot desde pre 0.7, y ahora estamos ejecutando 0.8 y ahora solo estamos viendo una razón real para cambiar, ya que buildbot 0.8 se olvidó de los esclavos de Windows por un período prolongado y el soporte fue bastante pobre.