En los últimos meses, Fractalia está desarrollando actividades de mejora interna que posicionen a nuestra organización como líder de desarrollo de servicios en el sector Telco. Dentro de estas tareas internas hemos creído necesario la implantación de un sistema de integración continua (CI) que nos ayude en nuestras actividades cotidianas de los procesos de compilación, pruebas y despliegues internos.
Dentro de la amplia variedad de estos tipos de servidores, nos hemos centrado en el análisis comparativo de dos de ellos: Bamboo y Jenkins.
La motivación de esta elección es bastante sencilla. Por un lado Bamboo es la solución software que ofrece la empresa Atlassian como servidor de integración continua. Dado que Fractalia ya dispone de productos de dicha compañía (Jira y Confluence) y tenemos un alto grado de satisfacción con los mismos, nos parecía interesante considerar Bamboo.
Por otro lado, Jenkins es un proyecto de código abierto con una gran difusión y una amplia comunidad, siendo uno de los servidores de integración continua opensource más utilizados.
Antes de comenzar el análisis en profundidad, es interesante ver la comparativa que nos ofrece
Wikipedia en http://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software
En lo relativo a las dos herramientas que vamos a analizar tenemos la siguiente tabla:
Name | ||
Platform | ||
License |
Creative Commons and MIT |
|
Window builders | ||
Java builders | ||
Other builders |
Cmake, Gant, Gradle, Grails, Phing, Rake, Ruby, SCons, Shell script |
custom script, command line, Bash |
SCM system |
AccuRev SCM, Bazaar, BitKeeper, Clearcase, CMVC, CVS, Git, Mercurial, Perforce, PVCS, SourceSafe, StarTeam, Subversion, TFS |
CVS, Subversion, Perforce, ClearCase, Mercurial, Dimension, Git |
Notification | ||
IDE Integration | ||
Other Integration |
Somos conscientes de que todas las tareas necesarias en este tipo de entornos pueden realizarse con ejecuciones de scripts y, en definitiva, por línea de comando. Es viable, por tanto, la utilización de cualquiera de ambas soluciones, pero queremos obtener el máximo partido y explotar las posibilidades de configuración y ejecución automática que nos presenten, frente a la configuración manual y a base de scripting. De esta forma se pretende ganar en automatización, mantenibilidad y, en definitiva, productividad de los equipos de desarrollo y de calidad.
Con respecto al estudio exhaustivo realizado por Fractalia, en este post os indicamos las conclusiones relativas al comportamiento de Bamboo y Jenkis en los siguientes escenarios:
- Integración con sistemas “Source Code Management” (SCM)
- Compilación con Visual Studio
- Generación de instaladores o proyectos de setup
- Integración con sistemas de gestión de código fuente o “Source Code Management” (SCM)
En este punto se ha estudiado la integración con los distintos SCMs y, en concreto, con subversión y mercurial.
Bamboo
En su instalación básica Bamboo soporta la integración con los siguientes SCMs: Subversion, Perforce, Mercurial, Bitbucket, Git y GitHub.
Se han encontrado Add-Ons en el martketplace para los siguientes SCMs: TFS.
Jenkins
En su instalación básica Jenkins soporta la integración con los siguientes SCMs: CVS, CVS Projectjset y Subversion
Jenkins contiene plugins para los siguientes SCMs: Accurev, Bazaar, BitKeeper, ClearCase, CMVC, Darcs, Dimensions, Git, GitBucket, CA Harvest, Mercurial, Perforce, PlasticsSCM, PVCS, StartTeam, Surround, TFS, Unity Asset, Vault/Fortress y SourceSafe.
- Compilación con Visual Studio
El sistema elegido debe poder compilar correctamente con los distintos Visual Studio que trabajamos (desde 2005 hasta 2012). Las compilaciones pueden ser utilizando la herramienta de línea de comando del Framework MSBuild o directamente el ejecutable de Visual Studio devenv.
Bamboo
Integración con el compilador de Visual Studio directa: devenv.com. Se pueden definir tantos ejecutables de Visual Studio (devenv.com) como se quieran, sin más que añadir el path donde se encuentra (no puede cambiarse el nombre del ejecutable).
Se añaden al sistema como ejecutables del tipo Visual Studio, asociándose a los planes como tareas de dicho tipo:
Al igual que en el caso anterior, Bamboo permite la compilación mediante la utilización de MsBuild. También pueden definirse tantos ejecutables como se quieran (referenciando a cada Framework instalado, por ejemplo) y, en este caso sí se permite referenciar el ejecutable exacto.
Se añaden al sistema como ejecutables del tipo MSBuild, asociándose a los planes como tareas de dicho tipo:
Jenkins
La configuración de Jenkins no diferencia las compilaciones realizadas con Visual Studio (devenv.com) de las de MsBuild, configurándose ambas desde el plugin llamado “Jenkins MSBuild Plugin”
Se permite seleccionar tantas instalaciones como se quiera (varias instalaciones de Visual Studio y/o del Framework)
A los proyectos se les asocia como pasos en el proceso de ejecución:
- Generación de instaladores o proyectos de setup
En este punto se pretende estudiar la generación de instaladores. Son particularmente interesantes los proyectos del tipo:
- Visual Studio Installer: Tecnología “legacy” en Visual Studio, pero en la que tenemos desarrollados algunos instaladores de Fractalia Manager y Fractalia Media, es decir, productos propios de Fractalia. Sólo disponible para VS anteriores al 2012
- InstallShield: Tecnología por la que apuesta Microsoft desde VS 2012. La versión completa es muy costosa y debería utilizarse la edición limitada.
- Windows Installer XML (WIX): Tecnología abierta muy extendida en la generación de instaladores con Visual Studio.
Bamboo
No se ha encontrado funcionalidad específica para esta tarea, ni en la instalación básica de Bamboo, ni en sus AddOns.
Debido a ello será necesario que la generación de los instaladores esté integrada dentro del proceso general de compilación, o que se realice desde línea de comando.
Jenkins
Jenkins dispone de un plugin para integrarse con WIX, por lo que para el resto de instaladores deberán generarse dentro del proceso de compilación o realizarse desde línea de comando.
Esto es todo por el momento. En el siguiente post continuaremos informando de las diferencias destacables entre Bamboo y Jenkins.
Leave a Comment