Documento de Integración continua - Trabajos de Grado | Ingeniería

Anuncio
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
Descargar