21
INTEGRACIÓN CONTINUA Fran Reyes <@Fran_Reyes > Juan Manuel Barroso <@jmbarroso >

INTEGRACIÓN CONTINUAjmbarroso.es › wp-content › uploads › 2012 › 02 › IC_presentacion.pdf¿ Integración continua? Metodología informática propuesta inicialmente por Martin

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

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

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

¿ 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

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

¿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

¿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

¿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

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

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

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

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

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

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

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

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

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

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

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

¿ 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

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

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

Práctica

Construcción continua & testing continuo

Feedbackcontinuo

Inspección continua

Despliegue continuo

Maven

MailTwitterPlugin

Sounds Plugin

Radiator Plugin

CoberturaPlugin

PMDPlugin

Maven (Tomcat Plugin)