INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 ›...
Transcript of INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 ›...
INTEGRACIÓN CONTINUA
Fran Reyes <@Fran_Reyes>Juan Manuel Barroso <@jmbarroso>
¿ 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.
Conceptos previos
• Construcción (build)
• Scripts de construcción (build script)
¿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
¿Qué necesitamos? (ii)
Builds Scripts• Desde el minuto 0• Independientes del sistema operativo • Ejecuten los test• Empaqueten la aplicación
¿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
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
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
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)
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)
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ó.
Prácticas necesarias (vi)
Buenas practicas en commits:
• Cambios frecuentes• Separar los commits• Funcionalidades atómicas • No mezclar formateo de código con funcionalidades
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!”
AVOID
Gamificación
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
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
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
¿ Dudas ?
A jugar
Práctica
Construcción continua & testing continuo
Feedback continuo
Inspección continua
Despliegue continuo
Práctica
Construcción continua & testing continuo
Feedbackcontinuo
Inspección continua
Despliegue continuo
Maven
MailTwitterPlugin
Sounds Plugin
Radiator Plugin
CoberturaPlugin
PMDPlugin
Maven (Tomcat Plugin)