Herramientas para la integración continúa DIANA MILENA BLANCO MORENO MÓNICA FERNANDA CORTÉS QUERALES PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERÍA CARREA DE INGENIERÍA DE SISTEMAS BOGOTÁ D.C. 2014 Pontificia Universidad Javeriana Documento de investigación– Integración continúa TABLA DE CONTENIDO TABLA DE CONTENIDO ........................................................................................................... 2 INTRODUCCIÓN ........................................................................................................................ 2 I – JENKINS ................................................................................................................................ 3 Características generales ........................................................................................................... 4 Ventajas ..................................................................................................................................... 4 Mecanismo de retroalimentación ............................................................................................. 5 Administración de extensiones.................................................................................................. 5 II –BAMBOO................................................................................................................................ 5 Características generales ........................................................................................................... 5 10 razones para utilizar Bamboo ............................................................................................... 6 Integración con DVCS .............................................................................................................. 7 Aislamientos de test problemáticos ........................................................................................... 7 III - CRUISECONTROL .............................................................................................................. 7 Características generales ........................................................................................................... 7 Bucles ........................................................................................................................................ 8 Módulos principales .................................................................................................................. 8 Proceso de detección de errores ................................................................................................ 8 IV - CONTINUUM ....................................................................................................................... 9 Características generales ......................................................................................................... 10 V –REFERENCIAS Y BIBLIOGRAFÍA ................................................................................... 11 INTRODUCCIÓN Ingeniería de Sistemas Istar - El siguiente documento describe algunas de las herramientas más utilizadas para la integración continua, de tal manera que se explicara a continuación este proceso de una manera general. Según su fundador Martin Fowler “La integración continua es una práctica de desarrollo de software en la cual los miembros de un equipo integran su trabajo frecuentemente, como mínimo de forma diaria. En donde cada integración se verifica mediante una herramienta de construcción automática para detectar errores de integración tan pronto como sea posible.” (Fowler, 2006) Según la definición realizada por Martin Fowler la integración continua es una herramienta la cual facilita la validación e integración de código, en donde cada integración se verifica compilando el código fuente y obteniendo un ejecutable (llamado build) (Carmen, 2014) el cual es el encargado de situar el código todo junto en un ambiente donde funciona de una manera cohesiva (it- mentor, 2014) De tal manera que existen practicas la integración continua, enunciadas a continuación: (jorge, 2009) Mantener único de repositorio de código fuente. Automatizar la construcción del proyecto. La construcción del proyecto ejecute sus propios test Mantener una ejecución rápida a la construcción del proyecto. Obtención por parte del equipo de trabajo de la última versión de forma fácil. Automatizar el despliegue I – JENKINS Página 3 Pontificia Universidad Javeriana Documento de investigación– Integración continúa Es una aplicación que supervisa las ejecuciones de trabajos repetidos, la cual es utilizada para integrar cambios en el proyecto de software, para aumentar la productividad del equipo de trabajo. (Kawaguchi, 2014) Características generales A continuación se enunciaran las características generales de la herramienta Jenkins, abarcando desde su precio hasta sus funcionalidades que soporta: (Kawaguchi, 2014) (Chico, 2012) Gratuito y de código abierto. Multiplataforma. Soporta herramientas como CVS, Subversión, Git, entre otras. Permite variar la manera de notificar errores. Integración con bases de datos. Personalizar interfaz Permite la creación de extensiones a través de Java Fácil de instalar y configurar: puesto que permite configurar completamente desde su interfaz gráfica de usuario Huellas digitales de archivos: se realiza seguimiento a los archivos del proyecto Computación externa bajo api XML y aplicaciones móviles Android y IOS Permite compilaciones y testeos distribuidos Comunidad de soporte Integración de correo electrónico, generando reportes o notificaciones a través del correo electrónico. Ventajas Jenkins brinda una serie de ventajas en la instalación y configuración de la herramienta, ya que permite gestionar el proceso a través del administrador del servidor desde su interfaz gráfica, desde la cual se puede controlar los siguientes elementos: (ECURED, 2014) Actualizar configuración desde el configuración desde el disco duro Administrar plugins. Muestra la información del sistema. Registro del sistema a través de logs que captura todas las salidas Se puede administrar o acceder a Jenkins desde la consola o desde scripts. Ingeniería de Sistemas Istar - Mecanismo de retroalimentación Los resultados de las tareas se notifican a través de correo electrónico, lo cual es ofrecido por el servidor de Jenkins, así mismo permite notificaciones de errores a través de Google calendar, Android, RSS, XMPP, IRC, y twitter (wikipedia, 2014). Administración de extensiones Para administrar los plugins de Jenkins se utiliza la interfaz gráfica de usuario, en la cual se realiza la gestión de las extensiones, que se puede acceder desde el administrador de Jenkins y se pueden encontrar varias opciones como: Actualizaciones disponibles Mostrar plugins Configuración avanzada Plugins instalados II –BAMBOO Es un herramienta utilizada para la integración continua desarrollado por Atlassian, cuya misión es vigilar los cambios de código en los proyectos, de tal manera que cuando se presente alguno se debe preparar y testar un build. (Cruz, 2012) Características generales A continuación se enunciaran las características generales de la herramienta Bamboo, abarcando desde su precio hasta sus funcionalidades que soporta: (Chico, 2012) Distribuido bajo licencia propietaria. Multiplataforma y de pago. Soporta compilaciones en cualquier lenguaje de programación. Permite integración con IDEs basados en eclipse o IntelliJ IDEA, ademas de Visual Studio. Página 5 Pontificia Universidad Javeriana Documento de investigación– Integración continúa Soporta integración con JIRA, que es un gestor de proyectos desarrollador, el cual también fue creado por Atlassian. Permite la integración con herramientas de control de calidad del código fuente como Sonar y Clover. Soporta herramientas como CVS, Subversión, Git, entre otras. Posibilidad de extensión mediante pulgins. 10 razones para utilizar Bamboo Cuando se utilizan diferentes herramientas para la integración continúa, se debe tener en cuenta el alcance de los proyectos para elegir la que es más adecuada, de tal manera que Bamboo propone 10 razones para utilizar su servidor, que serán enunciadas a continuación: (Bamboo, 2014) 1. Integración con JIRA: inicia desde la parte superior del problema de implementación, de tal manera que observa la calidad, liberación de estado, en donde despliegue los resultados en los mismos temas. 2. Soporte para despliegues: Bamboo permite enviar un flujo continuo de compilaciones para probar entornos, en donde se le da continua retroalimentación a los clientes cuando una rama esta lista. 3. Integración continúa en cada una de las ramas: se debe realizar calidad de código en cada una de las ramas de desarrollo, para esto se aplican automáticamente la generación de nuevas sucursales, en donde cada sucursal hereda la configuración. 4. Fusión automatizada: se debe realizar la integración de una manera frecuencia, esta funcionalidad de realiza para Git, y mercurial5. Pruebas: se pone en cuarentena las pruebas inestables, a través de un solo clic6. Tuberías flexibles: controlar la ejecución del flujo de trabajo en cada una de las etapas de construcción, lo cual permite libertad en continuar en paralelo la ejecución del trabajo, para esto solo es necesario decirle a Bamboo donde se encuentra el trabajo de construcción y las necesidades de despliegue que necesita consumir. 7. Sobre la marcha: Bamboo permite configuraciones sobre personalizar una sola vez las configuraciones de compilación, es decir que el vuelve automáticamente sobre las configuraciones guardadas para generaciones posteriores. Ingeniería de Sistemas Istar - 8. Gestión de agentes de manejador potentes: se puede aumentar el poder de construcción con unos clics, así mismo el almacenamiento se puede expandir a través de servidores como Amazon Ec2. 9. Apoyo y recursos: provee guías y documentos en línea para las mejores prácticas con el uso de esta herramienta. 10. Importación rápida desde Jenkins: permite una integración en lo realizado en Jenkins en tan solo minutos. Integración con DVCS Bamboo utiliza la metodología de ramas para la construcción de código, la cual consiste en ramificar los procesos y errores de construcción, de tal manera que se puede trabajar en diferentes actividades en paralelo y luego se integran para completar un requerimiento o proceso (Git , 2014) así pues se debe verificar la calidad del código en cada una de estas, para esto se utilizan dos estrategias (Cruz, 2012): Gatekeeper: se realizan combinación y actualizaciones en la rama principal, cuando se realiza cambios en otras. de los cambios de tu rama en la rama principal. Actualizar el build: Cuando una rama recibe un commit, esta estrategia hace cambios y fusiones en ella desde la rama principal. Si tiene éxito, los cambios se suben a la rama en cuestión. Aislamientos de test problemáticos Si en un equipo de desarrollo surge un test roto es posible que no se repare, sin embargo Bamboo permite poner los test problemáticos en cuarentena; de esta manera cuando un test se encuentra aislado no figura como fallo en el build, no obstante Bamboo notifica y recuerda los test en cuarentena para que se pueda arreglar (Cruz, 2012). III - CRUISECONTROL Es una herramienta que permite la integración continua y un marco extensible para la creación de procesos de generación personalizada continua (sourceforge.net, 2014), gestionado en java. Características generales A continuación se enunciaran las características generales de la herramienta Cruisecontrol, abarcando desde su precio hasta sus funcionalidades que soporta: (Chico, 2012) Gratuito y de código abierto. Página 7 Pontificia Universidad Javeriana Documento de investigación– Integración continúa Multiplataforma Distribuido bajo licencia BSD Provee interfaz web para la administración, gestión y monitorización. Desarrollado bajo java. Posibilidad de extensiones con plugins. Gestión de ejecuciones distribuidas del sistema Soporta herramientas como CVS, Subversión, Accurev, entre otras. No soporta la herramienta Git. Notificaciones a través de email y CCtray. Bucles CruiseControl utiliza bucles de construcción, los cuales están diseñados para comprobar periódicamente la herramienta de control de código fuente para los cambios en el código base, en donde este construye y en envía notificaciones sobre el estado en que se encuentra la actividad. (sourceforge.net, 2014) Módulos principales CruiseControl se compone de tres módulos principales, enunciados a continuación: (sourceforge.net, 2014) (Chico, 2012) Bucle de construcción: consiste en el núcleo del sistema, el cual se encarga mediante disparadores, de compilar la versión correspondiente y realizar notificación a los usuarios. Los disparadores pueden ser internos, programados o realizados en el momento que existan cambios en el sistema de control de versiones. Aplicación JSP: la aplicación permite a los usuarios navegar por los resultados de los ciclos de compilación y acceder a los artefactos. Dashboard: ofrece una presentación visual del estado de compilación de los proyectos. Proceso de detección de errores Integración continua permite compilar código probado y verificado para eliminar errores en el código o incompatibilidades de las diferentes partes realizadas por los desarrolladores del equipo Ingeniería de Sistemas Istar - de trabajo, de esta manera CruiseControl facilita la automatización de la fase de integración a través de los siguientes pasos: (kioskea.net, 2014) obtener archivos desde SCM Compilación de código fuente Creación del archivo de la aplicación Despliegue del archivo Pruebas Notificación del resultado Ilustración 1 solución CruiseControl IV - CONTINUUM Continuum es un sistema de integración continua, que tiene como funciones builds automatizados, gestión de versiones, seguridad basada en roles, así mismo permite integrase con herramientas de construcción (Apache Continuum, 2013). Página 9 Pontificia Universidad Javeriana Documento de investigación– Integración continúa Características generales A continuación se enunciaran las características generales de la herramienta Continuum abarcando desde su precio hasta sus funcionalidades que soporta: (Chico, 2012) (Continuum, 2014) Gratuito y de código abierto. Distribuido bajo licencia Apache 2.0. Multiplataforma No permite extensiones. Compilaciones distribuidas Soporta herramientas como CVS, Subversión, Clearcase, entre otras No soporta la herramienta Git. Permite notificaciones a través de Email, jabber and google Talk, MSN. Gestionado desde un servidor web Fácil instalación: a través de servlets. Fácil configuración: configuración a través de la interfaz web Integración externa: herramientas externas pueden interactuar con Continuum a través de api xml. Tipo de construcción: manual, programada y push Construir cola: los usuarios pueden ver todos los proyectos de la cola. Construcción en paralelo: los proyectos pueden ser construidos usando al mismo tiempo varias colas de construcción. Ingeniería de Sistemas Istar - V –REFERENCIAS Y BIBLIOGRAFÍA Apache Continuum. (13 de Junio de 2013). Continuous Integration and Build Server. Obtenido de http://continuum.apache.org/ Bamboo. (05 de Septimbre de 2014). 10 Reasons You'll Love Bamboo. Obtenido de https://www.atlassian.com/software/bamboo/got-jenkins Carmen, A. M. (9 de Mayo de 2014). Ques es Jenkins. Obtenido de http://www.javiergarzas.com/2014/05/jenkins-en-menos-de-10-min.html Chico, D. D. (Diciembre de 2012). Integración continua para open hardware. Madrid, Espana. Continuum. (18 de Junio de 2014). Continuum Features. Obtenido de http://continuum.apache.org/features.html Cruz, M. d. (30 de Abril de 2012). Integración continua con Bamboo. Obtenido de http://www.herramientasagiles.com/bamboo/integracion-continua-con-bamboo-4/ ECURED. (02 de Septiembre de 2014). Herramienta Jenkins. Obtenido de Integration. Obtenido de http://www.ecured.cu/index.php/Herramienta_Jenkins Fowler, M. (01 de Mayo de 2006). Continuous http://martinfowler.com/articles/continuousIntegration.html Git . (2 de septiembre de 2014). Procedimientos básicos para ramificar y fusionar. Obtenido de http://git-scm.com/book/es/Ramificaciones-en-Git-Procedimientos-b%C3%A1sicospara-ramificar-y-fusionar it- mentor. (06 de Septiembre de 2014). IntegracionContinua. Obtenido de Obtenido de http://materias.fi.uba.ar/7548/IntegracionContinua.pdf jorge. (28 de Septiembre de 2009). Integración continua. http://tratandodeentenderlo.blogspot.com/2009/09/integracion-continua.html Kawaguchi, K. (19 de Mayo de 2014). Meet Jenkins. Obtenido de https://wiki.jenkinsci.org/display/JENKINS/Meet+Jenkins Página 11 Pontificia Universidad Javeriana Documento de investigación– Integración continúa kioskea.net. (Septiembre de 2014). Instalación y configuración de CruiseControl . Obtenido de http://es.kioskea.net/faq/3684-instalacion-y-configuracion-de-cruisecontrol sourceforge.net. (03 de Septiembre de 2014). CruiseControl. Obtenido de http://cruisecontrol.sourceforge.net/ sourceforge.net. (03 de septiembre de 2014). The CruiseControl Build Loop. Obtenido de http://cruisecontrol.sourceforge.net/main/index.html wikipedia. (12 de septiembre de 2014). Comparison of continuous integration software. Obtenido de http://en.wikipedia.org/wiki/Comparison_of_continuous_integration_software