Herramientas de Integración Continua (CI)

Estudio inicial

Existen numerosas herramientas destinadas a la integración continua (algunas de ellas además poseen también herramientas de despliegue continuo), por lo que para escoger una que se adapte a las necesidades de nuestro proyecto, se van a evaluar las Principales herramientas de CI (referencias al final del documento) observando sus principales ventajas y desventajas de cara a nuestro proyecto:

Ventajas Desventajas
Interfaz intuitiva y sencilla de usar. Dificultad de integración de plugins.
Extensible gracias a su comunidad de usuarios mediante plugins. No está hosteado, por lo que hay que adquirir una máquina virtual y configurarlo.
Gratis y open source. Pese a sus actualizaciones, el núcleo sigue utilizando funciones de Java EE, por lo que existe un gran número de dependencias.
Se puede encontrar una extensa documentación. El núcleo puede resultar arcaico frente a otras herramientas más modernas.
Integración con Git.  
Ventajas Desventajas
Configuración inicial automática con GitHub, detectando el lenguaje y creando una configuración básica para el mismo. Opciones limitadas en el plan gratis.
Configuración sencilla mediante YAML. Precio alto, aunque en nuestro caso no es realmente una desventaja.
Soporte SSH, para acceder a la máquina virtual. Necesidad de conocer YAML.
Interfaz de usuario sencilla y intuitiva. Existen otras opciones con mejor documentación.
Soporte Docker.  
Paralelización de tests.  
Ventajas Desventajas
Instalación sencilla mediante paquetes en los distintos SO. Algunos de los plugins no funcionan según los usuarios en foros.
Paralelización de tests en diferentes entornos. Prueba gratuita limitada a 100 builds.
Facíl de configurar, extensible e interactivo. Logs poco intuitivos y con un formato que no resulta agradable de interpretar.
Permite asignación de roles y permisos. Errores en ocasiones poco claros.
Documentación sencilla, limpia e intuitiva. Suele ofrecer problemas en las actualizaciones de version.
Ventajas Desventajas
Gratis para proyectos open source con builds ilimitados. Permite 5 repositorios privados. Escasez de información no oficial.
Soporte Docker. Al haber sido adquirida por jFrog, se debe tener en cuenta también su otro nombre de cara a realizar búsquedas externas (jFrog Pipelines).
Integración con GitHub. No soporta todos los lenguajes, solo un pequeño conjunto.
Integración natural de tests.  
Configurable mediante YAML.  
Documentación clara de pasos básicos en los distintos lenguajes que soporta.  
Ventajas Desventajas
Configura equipos y permisos para organizaciones y miembros del equipo con el centro de notificaciones. Prueba gratuita limitada a 100 builds.
Se integra con cualquier herramienta, servicio y entorno de nube. No soporta módulso de Git.
Integración con GitHub sencilla. Quedan expuestos los secrets y variables de entorno ocultas.
Soporte Docker. No favorece el desarrollo open source
Configuración sencilla.  
Ventajas Desventajas
Completamente gratis en repositorios en fase Beta. No queda muy claro hasta que punto se considera un repositorio en fase Beta, por lo que es un riesgo.
Libertad completa a la hora de realizar la configuración. Documentación excesivamente compleja e incomprensible.
Integración con GitHub. Escasez de información no oficial, lo cual es inesperado tratándose de una herramienta de Oracle.
Chatbot que facilita las notificaciones.  
Ventajas Desventajas
Integración con GitHub. Escasez de documentación.
Realiza el hosteo de forma autónoma. No permite realizar esperas entre tareas.
Integración con Docker. Poco soporte de la herramienta.
Plan gratis de 5000 builds al año. Para las características que presenta, es preferible utilziar CircleCI.
Paralelismo de tests. Hardware no configurable.
Configurable mediante YAML.  
Ventajas Desventajas
Gratis para proyectos open source. Configuración limitada a todo el proyecto o una única rama.
Posee entornos de construcción tanto para Windows como Linux. Existen opciones mejores como CircleCI o Travis, y con más documentación.
Interfaz limpia y sencilla.  
Configurable mediante YAML.  
Paralelismo de tests.  
Ventajas Desventajas
Gratis para proyectos open source. Prueba gratuita limitada a 100 builds.
Soporte Docker. No permite su uso con repositorios privados.
Integración con GitHub. No está hosteado, por lo que hay que adquirir una máquina virtual y configurarlo.

Además de las previamente analizadas, se han estudiado también opciones como GitLabCI, Bamboo, Buddy o GoCD, que han sido rechazadas directamente por distintos motivos. Se puede observar que realmente hay un amplio abanico de opciones a elegir para realizar la integración continua en el proyecto, por lo que dentro de elegir aquellas que más se adecúen al proyecto, también cabe observar aquellas que resulten más interesantes para el mismo.

Elecciones finales

Tras analizar las distintas opciones, se ha decidido finalmente realizar la integración continua con distintas herramientas y ver como se realiza en cada una de ellas: