integraciÓn continuajmbarroso.es › wp-content › uploads › 2012 › 02 ›...
TRANSCRIPT
![Page 1: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/1.jpg)
INTEGRACIÓN CONTINUA
Fran Reyes <@Fran_Reyes>Juan Manuel Barroso <@jmbarroso>
![Page 2: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/2.jpg)
¿ Integración continua?
Metodología informática propuesta inicialmente por Martin Fowler que consiste en hacer integraciones automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes. Entendemos por integración la compilación y ejecución de los tests de todo un proyecto.
![Page 3: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/3.jpg)
Conceptos previos
• Construcción (build)
• Scripts de construcción (build script)
![Page 4: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/4.jpg)
¿Qué necesitamos? (i)
Sistema control de versiones (SCV)• Centralizado • Localización conocida por todo el equipo• Deben tener todo lo necesario para hacer el build• Librerías, configuración, scripts
![Page 5: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/5.jpg)
¿Qué necesitamos? (ii)
Builds Scripts• Desde el minuto 0• Independientes del sistema operativo • Ejecuten los test• Empaqueten la aplicación
![Page 6: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/6.jpg)
¿Cómo sería el ciclo de desarrollo con IC?
Checkout
Clean checkout new build
Creamos funcionalidad
Build Automático en local
UpdateBuild Automático
en localCommit
Feedback
![Page 7: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/7.jpg)
Prácticas necesarias (i)
Automatizar la construcción
• Compilar• Ejecución de tests• Generar documentación• Generación de los desplegables• Despliegue en el servidor• Construcción debería poder lanzarse con un único
comando desde la consola
![Page 8: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/8.jpg)
Prácticas necesarias (ii)
Buenas practicas en la automatización de la construcción:
• No usar un IDE (Eclipse , Netbeans)• Desde el minuto cero• Dividir el proceso en comandos (compilar, test,
documentación, empaquetado, despliegue,..)• Intentar que el proceso sea rápido y ligero.• Dividir y delegar la parte mas lenta en el servidor de IC
![Page 9: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/9.jpg)
Prácticas necesarias (iii)
Test forman parte de la construcción
• Pruebas imperfectas, que corren frecuentemente, son mejores que perfectas que nunca se han escrito. • Intentar que sean rápidas.• Si no pasan, no se construye la aplicación.• Mantener diferentes tareas para lanzar los diferentes
tipos de pruebas (Unitarias, Integración y sistemas)
![Page 10: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/10.jpg)
Prácticas necesarias (iv)
Buenas practicas en las pruebas:
• Estructurar el proyecto por tipo de test:• test/unit , test/integration, ..• Escribir test para los distintos bugs que se
encuentren• Realizar comprobaciones en los test (usar asserts y
tener claro el objetivo a probar)
![Page 11: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/11.jpg)
Prácticas necesarias (v)
Subir cambios de manera frecuente
• Práctica principal de IC.• Cambios frecuentes nos obligan a pensar en tareas más
pequeñas.• No subir código que no funciona• Si se suben cambios erróneos, repararlo con la mayor
celeridad posible. Es responsabilidad de la persona que los subió.
![Page 12: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/12.jpg)
Prácticas necesarias (vi)
Buenas practicas en commits:
• Cambios frecuentes• Separar los commits• Funcionalidades atómicas • No mezclar formateo de código con funcionalidades
![Page 13: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/13.jpg)
Prácticas necesarias (vii)
Maquina de integración
Cuando utilizamos una máquina de integración donde realizamos las construcciones a partir del repositorio, reducimos las suposiciones sobre el entorno y la configuración y ayudamos a prevenir los problemas del tipo “¡En mi máquina funciona!”
![Page 14: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/14.jpg)
AVOID
Gamificación
![Page 15: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/15.jpg)
Herramientas
•CruiseControl
•CruiseControl.NET
•CruiseControl.rb
•Cruise
•CI Factory
•Drumbeat CI
•Tinderbox & Tinderbox2
•BuildBot
•Anthill Professional
•Anthill
•Bamboo
•Luntbuild professional
•LuntBuild
•Gump
•Continuum
•Sin
•OpenMake Meister
•OpenMake Mojo
•Parabuild
•Tinderbox3
•Pulse
•TeamCity(EAP)
•Jenkins
•FinalBuilder Server
•Zed
•easyCIS
•RedJack
![Page 16: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/16.jpg)
Jenkins
• Servidor de integración continua• Open source• Enfocado a la sencillez de instalación y uso• Extensible (+350 plugins)• Antes de enero de 2011 era conocido por Hudson• Fácilmente clusterizable• Útil en integración continua y monitorización continua
![Page 17: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/17.jpg)
Jenkins - Monitorización
• Ejecución programada de tareas de mantenimiento• Monitorización caídas• Fácil integración con• JMeter , SOAP-UI, JUnit, ..• Notificaciones• Email• Twitter• Visuales• Sonoras
![Page 18: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/18.jpg)
¿ Dudas ?
![Page 19: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/19.jpg)
A jugar
![Page 20: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/20.jpg)
Práctica
Construcción continua & testing continuo
Feedback continuo
Inspección continua
Despliegue continuo
![Page 21: INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin](https://reader034.vdocuments.co/reader034/viewer/2022042316/5f0480957e708231d40e49ba/html5/thumbnails/21.jpg)
Práctica
Construcción continua & testing continuo
Feedbackcontinuo
Inspección continua
Despliegue continuo
Maven
MailTwitterPlugin
Sounds Plugin
Radiator Plugin
CoberturaPlugin
PMDPlugin
Maven (Tomcat Plugin)