Continuando con el análisis comparativo entre Bamboo y Jenkins (servidores de Integración Continua), analizando ahora los escenarios:
- Ejecución de Test Unitarios
- Ejecución de métricas software
- Despliegues automáticos y pruebas de integración
- Notificación de resultados
- Otros puntos de interés
- Ejecución de Test Unitarios
El objetivo de estos test es comprobar la integración del sistema con los distintos métodos de ejecución de pruebas unitarias para .NET: MSTests, NUnit o tecnología similar. Las conclusiones obtenidas son:
Bamboo
Para pruebas .NET Bamboo dispone de integración con varias herramientas:
- Runners (permiten la ejecución de la herramienta externa de forma integrada): MSTest y NUnit.
- Parsers (permiten la visualización de los datos generados por la herramienta): MBUnit, MSTest, NUnit,
Para otros lenguajes de programación se han encontrado: JUnit, PHPUnit y TestNG.
En la siguiente figura puede verse un ejemplo de ejecución de tests unitarios:
Jenkins
Para pruebas de desarrollos en .NET disponemos de integración con al menos las siguientes herramientas: MSTest, VSTest, NUnit.
Para otros lenguajes de programación y herramientas de automatización se han encontrado numerosos plugins, desde JUnit y PHPUnit, hasta herramientas para entornos web (ejp: Selenium) e incluso para plataformas móviles (Android, iOS)
En la siguiente figura puede verse un ejemplo de ejecución de tests unitarios:
- Ejecución de métricas software
Hemos analizado la posibilidad de ejecutar métricas de calidad de software (C#, .NET) e incluirlas dentro del proceso de compilación: VS Code Metrics, Resharper, etc. Los resultados obtenidos son:
Bamboo
No se han encontrado add-ons con esta funcionalidad.
Atlassian tiene una herramienta de análisis de código (Clover), aunque parece válida sólo para Java y Groovy.
Jenkins
Dispone de un plugin para la ejecución de “Visual Studio Code Metrics PowerTool”. Representa las métricas generadas por el visual estudio. Son métricas muy sencillas pero pueden ser de utilidad como visión general de un proyecto.
En esta misma línea podría ser interesante el estudio del plugin Sonargraph Plugin, que parece analizar la arquitectura de una aplicación de forma automática.
- Despliegues automáticos y pruebas de integración
En este punto hemos estudiado la posibilidad de ejecutar/restaurar máquinas virtuales desde el propio CI para automatizar los despliegues y posibles pruebas de integración.
Las pruebas de integración con VMWare no han podido realizarse debido a que las versiones de los ESXI instalados en desarrollo parecen no tener la funcionalidad por ser de licencia gratuita.
Bamboo
Dispone del plugin Bamboo VMWare Plugin (gratis sin agentes remotos) con el que se pueden gestionar máquinas virtuales: arrancar, parar, seleccionar snapshot, etc.
No se han encontrado plugins adiconales.
Jenkins
Existen diferentes plugins para la gestión de máquinas virtuales: VMware, VirtualBox, Proxmox y el framework Vagrant
La mayoría de estos plugins están pensados para montar máquinas virtuales como máquinas secundarias (slaves) de Jenkins, pero disponen de la funcionalidad necesaria para gestionarlas: arrancar, parar, seleccionar snapshot, etc.
- Notificación de resultados.
Por último, hemos querido analizar qué tipo de notificaciones ponen a nuestra disposición ambos sistemas, tanto al envío de correos, mensajería como en lo relativo a la integración con las herramientas ya utilizadas en el departamento (Jira, Bugzilla, etc.)
Bamboo
La instalación básica de Bamboo nos permite incluir notificaciones mediante email y mensajería instantánea.
Adicionalmente nos permite integrarnos fácilmente con otros productos de Atlassian, como JIRA, donde nos permite la asociación de planes de compilación y despliegue a releases, issues, etc.
Jenkins
Igual que en el caso anterior, Jenkis nos permite configurar las notificaciones para utilizar un servidor de correo, disponiendo además de plugins para la integración con JIRA y Bugzilla.
- Otros puntos de interés
Consumo de recursos
Uno de los aspectos que nos ha parecido interesante resaltar en este post, es el consumo de recursos de ambos servidores. Aunque ambas herramientas presentan una ejecución limpia y sin retardos, Bamboo parece requerir más memoria para su funcionamiento, consumiendo nada más ser arrancado 500 MB de memoria frente a los 100 MB de Jenkins.
Mantenimiento, actualizaciones, etc.
En cuanto al mantenimiento, actualizaciones e instalación de plugins o add-ons, ambas herramientas se comportan de una forma muy similar, siendo muy sencilla su instalación y actualización, la cual se realiza directamente desde el entorno web.
Proyectos entornos móviles.
En los puntos anteriores nos hemos centrado en la realización de un proyecto .NET basado en herramientas Microsoft. Resulta de interés el análisis de ambos servidores en lo relativo a la compilación de proyectos destinados a otros entornos, en particular iOS y Android.
En este punto Bamboo pone a nuestra disposición un add-on para la compilación de aplicaciones Cocoa e iOS, sin embargo no se han encontrado utilidades para proyectos Android.
Por otro lado, Jenkins sí nos ofrece una amplia variedad de plugins, tanto para proyectos Android como iOS: Android Emulator, Appaloosa, iOS Device Connector, etc.
En los puntos anteriores se ha realizado un análisis de ambas herramientas para las necesidades particulares que tenemos, Siendo ambas herramientas perfectamente válidas, se ha intentado dar una visión lo más objetiva posible,
Esperamos haber conseguido esta imparcialidad, aunque, como os podréis imaginar, después de utilizar ambas herramientas durante un tiempo siempre surgen preferencias.. Pero lo importante es: ¿Cuál elegirías tú?
Leave a Comment