INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 ›...

Preview:

Citation preview

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)

Recommended