Integracion Continua

26
Integración Continua

description

 

Transcript of Integracion Continua

Page 1: Integracion Continua

Integración Continua

Page 2: Integracion Continua

Agenda

Introducción a la Integración Contínua

Ventajas que aporta

Necesidades

Escenario de Aplicación

Referencias

Page 3: Integracion Continua

Introducción a laIntegraciónContinua

Page 4: Integracion Continua

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.

Page 5: Integracion Continua

Integración Continua:Ventajas

Page 6: Integracion Continua

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…

Page 7: Integracion Continua

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.

Page 8: Integracion Continua

Integración Continua:Necesidades

Page 9: Integracion Continua

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, …

Page 10: Integracion Continua

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.

Page 11: Integracion Continua

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

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

Repositorios locales y remotos (en modo proxy)

Page 12: Integracion Continua

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.

Page 13: Integracion 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.

Page 14: Integracion Continua

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.

Page 15: Integracion Continua

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.

Page 16: Integracion Continua

3.4 Servidor de Integración Continua

Estado del útlimo build

“Salud” del trabajo

Listado de trabajos de integración

Page 17: Integracion Continua

3.4 Servidor de Integración Continua

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

Histórico de Construcciones

Page 18: Integracion Continua

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.

Page 19: Integracion Continua

3.5 Herramientas de Análisis (2)

Page 20: Integracion Continua

Escenarios de Aplicación

Page 21: Integracion Continua

4.0 Escenario de aplicación

Page 22: Integracion Continua

Referencias

Page 23: Integracion Continua

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.

Page 24: Integracion Continua

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.

Page 25: Integracion Continua

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.

Page 26: Integracion Continua

Gracias por su atención

Pedro [email protected] MÁS INFORMACIÓN:

www.atsistemas.com / e-mail: [email protected]