Integracion Continua

Post on 30-Oct-2014

4.134 views 2 download

Tags:

description

 

Transcript of Integracion Continua

Integración Continua

Agenda

Introducción a la Integración Contínua

Ventajas que aporta

Necesidades

Escenario de Aplicación

Referencias

Introducción a laIntegraciónContinua

1.0 Integración Continua

Permite asegurar:

o Continuamenteo de forma automatizada

que los cambios que lleva cada uno de los desarrolladores en un equipo de trabajo no presenta problemas de integración con el código del resto del equipo.

Es una de las prácticas propuestas por XP, eXtremme Programming, que es una de las metodologías ágiles más conocidas.

El objetivo es trasladar la variable del esfuerzo de integración de la parte final del desarrollo para repartirlo a lo largo de todo el proyecto.

Integración Continua:Ventajas

2.0 Ventajas (1)

Permite:

Minimizar los tiempos y la problemática de la integración en los equipos de desarrollo.

Automatizar la construcción y paso de pruebas en cada cambio realizado en el repositorio de código Mejora la eficiencia del equipo de desarrollo.

Automatizar herramientas de análisis de calidad del código, como Sonar, Checkstyle, PMD, Cobertura, etc…

2.0 Ventajas (2)

Automatizar pasos a entornos de pruebas, como entornos de preproducción. Se identifican errores de entorno en fases tempranas.

Automatizar tareas de gestión de la configuración, como etiquetado de versiones de desarrollo Minimiza el tiempo de realimentación con el cliente.

Hacer visible al equipo de desarrollo el estado del proyecto.

Aumentar la confianza en el código entregado al repositorio.

Integración Continua:Necesidades

3.0Necesidades: AutomatizarLa construcción del sistema (1)

La integración continua requiere que el build completo del sistema este automatizado y pueda ejecutarse con un único comando

Ello implica mejorar la gestión de dependencias.

Actualmente, la mejor propuesta de herramienta de gestión de dependencias es Maven.

Empleando repositorios corporativos, se permite integrar los artefactos privados, con la gestión optimizada de los repositorios de artefactos públicos, ej: Nexus, Artifactory, …

3.0Necesidades: AutomatizarLa construcción del sistema (2)

Beneficios de Maven:

• Gestión automática de dependencias:

• Tanto con artefactos públicos y otros frameworks (Spring, JPA, JSF, … ) como con artefactos privados.

• Habilita un ciclo de vida repetible: Construcción, pruebas, empaquetado, despliegue, etc..

• Independiente del IDE de desarrollo empleado.

• Mejora la carga de los entornos de desarrollo locales y reduce el tiempo de creación inicial y configuración de dichos entornos.

• Habilita la creación de repositorios corporativos de dependencias y artefactos, mejorando la organización interna.

3.0Necesidades: AutomatizarLa construcción del sistema (3)

Estructura ordenada de artefactos:- Grupo- Artefacto- Versión

Repositorios locales y remotos (en modo proxy)

3.1 Build Self –Testing (1)

Implica que el código desarrollado tenga siempre al menos pruebas unitarias que cubran el mayor porcentaje posible del mismo.

Es posible aplicando metodología TDD: Test Driven Development.

TDD garantiza que el juego de pruebas evoluciona acorde a la evolución del sistema, al ser necesario plantear la prueba antes del componente a desarrollar.

La integración continua potencia sus beneficios al garantizar la ejecución automática de ese juego de pruebas de forma continua.

3.1 Build Self –Testing (2)

El punto de partida son los frameworks XUnit, que permiten reducir el esfuerzo en la creación de los componentes de prueba:

• Test Unitarios: Ej: JUnit.

• Test de Integración: Ej: DBUnit.

La integración continua permite también automatizar:

• Pruebas de rendimiento, Ej: JMeter, JUnitPerf.

• Pruebas automáticas de interfaz de usuario, Ej: Selenium, Sahi, Watir.

3.3 Entrega Continua de Cambios

Es necesario establecer un punto único como repositorio del sistema en desarrollo, con la estructura adecuada, normalmente:

• Rama principal con la versión actual en desarrollo. (HEAD / trunk)

• Rama de mantenimiento de la última versión en producción.

Los miembros del equipo de desarrollo deben entregar sus cambios cada vez que esos cambios sean correctos y pasen las pruebas asociadas en su entorno local, afrontando antes la integración con cambios conflictivos de otros miembros del equipo

En todo momento, el servidor de integración continua construye de forma completa el sistema en cada cambio del repositorio, avisando de los errores a los autores de los cambios entregados.

3.4 Servidor de Integración Continua

Existen múltiples implementaciones disponibles: Hudson, Continuum, Cruise Control, …

Es capaz de:

o Detectar cambios y descargar el código desde el repositorio de versiones.

o Lanzar la construcción del sistema, y la ejecución de las pruebas.

o Ejecutar automáticamente herramientas de análisis de la calidad del

código.

o Publicar los artefactos generados en la construcción.

o Etiquetar el código tras una construcción exitosa.

o Ante errores, notificar al equipo de desarrollo de los mismos.

o Gestionar el histórico de construcciones y de estadísticas de pruebas.

3.4 Servidor de Integración Continua

Estado del útlimo build

“Salud” del trabajo

Listado de trabajos de integración

3.4 Servidor de Integración Continua

Evolución de resultados de la ejecución de las pruebas

Histórico de Construcciones

3.5 Herramientas de Análisis (1)

Es importante disponer de herramientas que permitan automatizar análisis de código para gestionar:

o Nomenclaturas requeridas por arquitectura y metodología.

o Buenas prácticas.

o Código repetido.

o % de código cubierto por pruebas.

o Parámetros de complejidad de clases y métodos.

o % de código comentado.

o Evolución de las métricas a lo largo del tiempo.

3.5 Herramientas de Análisis (2)

Escenarios de Aplicación

4.0 Escenario de aplicación

Referencias

5.0 Santa Lucía

Actualmente en fase de consultoría:

o Estudio de metodología de pruebas.

o Alcance del modelo de integración continua a implementar.

o Estudio de gestión de dependencias con Maven.

o Necesidades de formación:

o Formación en frameworks XUnit: JUnit, DBUnit, Jmock, …

o Formación en Maven.

5.1 RTVE

Actualmente en fase de implantación:

o Servidor de Integración continua basado en Hudson.

o Gestión de dependencias con Maven.

o Servidor corporativo de artefactos.

o Herramientas de gestión de métricas.

5.2 atSistemas

Actualmente implantado de forma completa en el Centro de Desarrollo del Puerto de Santa María:

o Servidor de Integración continua basado en Hudson.

o Gestión de dependencias con Maven.

o Metodología TDD.

o Análisis de Métricas basado en Sonar.

o Repositorio Corporativo de artefactos.

Gracias por su atención

Pedro Gallardo.pedro.gallardo.delgado@atsistemas.comPARA MÁS INFORMACIÓN:

www.atsistemas.com / e-mail: at@atsistemas.com