Integración Continua<br />
Agenda<br />Introducción a la Integración Contínua<br />Ventajas que aporta<br />Necesidades<br />Escenario de Aplicación<...
Introducción a la<br />Integración<br />Continua<br />
1.0<br />Integración Continua<br />Permite asegurar:<br /><ul><li>  Continuamente
  de forma automatizada </li></ul>que los cambios que lleva cada uno de los desarrolladores en un equipo de trabajo no pre...
Integración Continua:<br />Ventajas<br />
Ventajas (1)<br />2.0<br />Permite:<br />Minimizar los tiempos y la problemática de la integración en los equipos de desar...
Ventajas (2)<br />2.0<br />Automatizar pasos a entornos de pruebas, como entornos de preproducción.  Se identifican error...
Integración Continua:<br />Necesidades<br />
Necesidades: Automatizar<br />La construcción del sistema (1)<br />3.0<br />La integración continua requiere que el build ...
Necesidades: Automatizar<br />La construcción del sistema (2)<br />3.0<br />Beneficios de Maven:<br /><ul><li>  Gestión au...
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 ent...
Habilita la creación de repositorios corporativos de dependencias y artefactos, mejorando la organización interna.</li></l...
 Artefacto
 Versión</li></li></ul><li>   Build Self –Testing (1)<br />3.1<br />Implica que el código desarrollado tenga siempre al me...
   Build Self –Testing (2)<br />3.1<br />El punto de partida son los frameworks XUnit, que permiten reducir el esfuerzo en...
  Test de Integración: Ej: DBUnit.</li></ul>La integración continua permite también automatizar:<br /><ul><li>  Pruebas de...
  Pruebas automáticas de interfaz de usuario, Ej: Selenium, Sahi, Watir.</li></li></ul><li>   Entrega Continua de Cambios<...
 Rama de mantenimiento de la última versión en producción.</li></ul>Los miembros del equipo de desarrollo deben entregar s...
   Servidor de Integración Continua<br />3.4<br />Existen múltiples implementaciones disponibles: Hudson, Continuum, Cruis...
  Ejecutar automáticamente herramientas de análisis de la calidad del    </li></ul>    código.<br /><ul><li>  Publicar los...
  Etiquetar el código tras una construcción exitosa.
  Ante errores, notificar al equipo de desarrollo de los mismos.
Upcoming SlideShare
Loading in...5
×

Integracion Continua

3,467

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,467
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
151
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Integracion Continua

  1. 1. Integración Continua<br />
  2. 2. Agenda<br />Introducción a la Integración Contínua<br />Ventajas que aporta<br />Necesidades<br />Escenario de Aplicación<br />Referencias<br />
  3. 3. Introducción a la<br />Integración<br />Continua<br />
  4. 4. 1.0<br />Integración Continua<br />Permite asegurar:<br /><ul><li> Continuamente
  5. 5. de forma automatizada </li></ul>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.<br />Es una de las prácticas propuestas por XP, eXtremme Programming, que es una de las metodologías ágiles más conocidas.<br />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.<br />
  6. 6. Integración Continua:<br />Ventajas<br />
  7. 7. Ventajas (1)<br />2.0<br />Permite:<br />Minimizar los tiempos y la problemática de la integración en los equipos de desarrollo.<br />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.<br />Automatizar herramientas de análisis de calidad del código, como Sonar, Checkstyle, PMD, Cobertura, etc… <br />
  8. 8. Ventajas (2)<br />2.0<br />Automatizar pasos a entornos de pruebas, como entornos de preproducción.  Se identifican errores de entorno en fases tempranas.<br />Automatizar tareas de gestión de la configuración, como etiquetado de versiones de desarrollo  Minimiza el tiempo de realimentación con el cliente.<br />Hacer visible al equipo de desarrollo el estado del proyecto.<br />Aumentar la confianza en el código entregado al repositorio.<br />
  9. 9. Integración Continua:<br />Necesidades<br />
  10. 10. Necesidades: Automatizar<br />La construcción del sistema (1)<br />3.0<br />La integración continua requiere que el build completo del sistema este automatizado y pueda ejecutarse con un único comando<br />Ello implica mejorar la gestión de dependencias.<br />Actualmente, la mejor propuesta de herramienta de gestión de dependencias es Maven.<br />Empleando repositorios corporativos, se permite integrar los artefactos privados, con la gestión optimizada de los repositorios de artefactos públicos, ej: Nexus, Artifactory, …<br />
  11. 11. Necesidades: Automatizar<br />La construcción del sistema (2)<br />3.0<br />Beneficios de Maven:<br /><ul><li> Gestión automática de dependencias:
  12. 12. Tanto con artefactos públicos y otros frameworks (Spring, JPA, JSF, … ) como con artefactos privados.
  13. 13. Habilita un ciclo de vida repetible: Construcción, pruebas, empaquetado, despliegue, etc..
  14. 14. Independiente del IDE de desarrollo empleado.
  15. 15. Mejora la carga de los entornos de desarrollo locales y reduce el tiempo de creación inicial y configuración de dichos entornos.
  16. 16. Habilita la creación de repositorios corporativos de dependencias y artefactos, mejorando la organización interna.</li></li></ul><li>Necesidades: Automatizar<br />La construcción del sistema (3)<br />3.0<br />Repositorios locales y remotos (en modo proxy)<br />Estructura ordenada de artefactos:<br /><ul><li> Grupo
  17. 17. Artefacto
  18. 18. Versión</li></li></ul><li> Build Self –Testing (1)<br />3.1<br />Implica que el código desarrollado tenga siempre al menos pruebas unitarias que cubran el mayor porcentaje posible del mismo.<br />Es posible aplicando metodología TDD: Test Driven Development.<br />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.<br />La integración continua potencia sus beneficios al garantizar la ejecución automática de ese juego de pruebas de forma continua.<br />
  19. 19. Build Self –Testing (2)<br />3.1<br />El punto de partida son los frameworks XUnit, que permiten reducir el esfuerzo en la creación de los componentes de prueba:<br /><ul><li> Test Unitarios: Ej: JUnit.
  20. 20. Test de Integración: Ej: DBUnit.</li></ul>La integración continua permite también automatizar:<br /><ul><li> Pruebas de rendimiento, Ej: JMeter, JUnitPerf.
  21. 21. Pruebas automáticas de interfaz de usuario, Ej: Selenium, Sahi, Watir.</li></li></ul><li> Entrega Continua de Cambios<br />3.3<br />Es necesario establecer un punto único como repositorio del sistema en desarrollo, con la estructura adecuada, normalmente:<br /><ul><li> Rama principal con la versión actual en desarrollo. (HEAD / trunk)
  22. 22. Rama de mantenimiento de la última versión en producción.</li></ul>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<br />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.<br />
  23. 23. Servidor de Integración Continua<br />3.4<br />Existen múltiples implementaciones disponibles: Hudson, Continuum, Cruise Control, …<br />Es capaz de:<br /><ul><li> Detectar cambios y descargar el código desde el repositorio de </li></ul> versiones.<br /><ul><li> Lanzar la construcción del sistema, y la ejecución de las pruebas.
  24. 24. Ejecutar automáticamente herramientas de análisis de la calidad del </li></ul> código.<br /><ul><li> Publicar los artefactos generados en la construcción.
  25. 25. Etiquetar el código tras una construcción exitosa.
  26. 26. Ante errores, notificar al equipo de desarrollo de los mismos.
  27. 27. Gestionar el histórico de construcciones y de estadísticas de pruebas.</li></li></ul><li> Servidor de Integración Continua<br />3.4<br />Listado de trabajos de integración<br />Estado del útlimobuild<br />“Salud” del<br /> trabajo<br />
  28. 28. Servidor de Integración Continua<br />3.4<br />Evolución de resultados de la ejecución de las pruebas<br />Histórico de Construcciones<br />
  29. 29. Herramientas de Análisis (1)<br />3.5<br />Es importante disponer de herramientas que permitan automatizar análisis de código para gestionar:<br /><ul><li> Nomenclaturas requeridas por arquitectura y metodología.
  30. 30. Buenas prácticas.
  31. 31. Código repetido.
  32. 32. % de código cubierto por pruebas.
  33. 33. Parámetros de complejidad de clases y métodos.
  34. 34. % de código comentado.
  35. 35. Evolución de las métricas a lo largo del tiempo. </li></li></ul><li> Herramientas de Análisis (2)<br />3.5<br />
  36. 36. Escenarios de <br />Aplicación<br />
  37. 37. Escenario de aplicación<br />4.0<br />
  38. 38. Referencias<br />
  39. 39. Santa Lucía<br />5.0<br />Actualmente en fase de consultoría:<br /><ul><li> Estudio de metodología de pruebas.
  40. 40. Alcance del modelo de integración continua a implementar.
  41. 41. Estudio de gestión de dependencias con Maven.
  42. 42. Necesidades de formación:
  43. 43. Formación en frameworks XUnit: JUnit, DBUnit, Jmock, …
  44. 44. Formación en Maven.</li></li></ul><li> RTVE<br />5.1<br />Actualmente en fase de implantación:<br /><ul><li> Servidor de Integración continua basado en Hudson.
  45. 45. Gestión de dependencias con Maven.
  46. 46. Servidor corporativo de artefactos.
  47. 47. Herramientas de gestión de métricas.</li></li></ul><li> atSistemas<br />5.2<br />Actualmente implantado de forma completa en el Centro de Desarrollo del Puerto de Santa María:<br /><ul><li> Servidor de Integración continua basado en Hudson.
  48. 48. Gestión de dependencias con Maven.
  49. 49. Metodología TDD.
  50. 50. Análisis de Métricas basado en Sonar.
  51. 51. Repositorio Corporativo de artefactos. </li></li></ul><li>Graciasporsuatención<br />Pedro Gallardo.<br />pedro.gallardo.delgado@atsistemas.com<br />PARA MÁS INFORMACIÓN:<br />www.atsistemas.com / e-mail: at@atsistemas.com<br />
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×