Desarrollo potenciado mediante
Integración Continua
Armando Picón Z.Twitter: @apiconzBlog: http://blog.apicon.info
Contenidos
Algunos problemas durante el desarrollo...ConceptoBeneficiosPrácticas fundamentales¿Cómo trabaja?HerramientasDemo
Algunos problemas durante el desarrollo...
Nadie tiene la última versión del proyecto.
Algunos problemas durante el desarrollo...
Nadie tiene la última versión del proyecto.
Nadie sabe cómo va el proyecto.
Algunos problemas durante el desarrollo...
Nadie tiene la última versión del proyecto.
Nadie sabe cómo va el proyecto.
Preparas un build completo segun la ocasión.
Algunos problemas durante el desarrollo...
Nadie tiene la última versión del proyecto.
Nadie sabe cómo va el proyecto.
Preparas un build completo segun la ocasión.
Las funcionalidades no se prueban adecuadamente.
Algunos problemas durante el desarrollo...
Nadie tiene la última versión del proyecto.
Nadie sabe cómo va el proyecto.
Preparas un build completo segun la ocasión.
Las funcionalidades no se prueban adecuadamente.
“...pero si funciona en mi máquina...”
Algunos problemas durante el desarrollo...
Nadie tiene la última versión del proyecto.
Nadie sabe cómo va el proyecto.
Preparas un build completo segun la ocasión.
Las funcionalidades no se prueban adecuadamente.
“...pero si funciona en mi máquina...”
Las pruebas toman tiempo y aburren.
Algunos problemas durante el desarrollo...
Nadie tiene la última versión del proyecto.
Nadie sabe cómo va el proyecto.
Preparas un build completo segun la ocasión.
Las funcionalidades no se prueban adecuadamente.
“...pero si funciona en mi máquina...”
Las pruebas toman tiempo y aburren.
Sorpresas tras el despliegue.
Algunos problemas durante el desarrollo...
Nadie tiene la última versión del proyecto.
Nadie sabe cómo va el proyecto.
Preparas un build completo segun la ocasión.
Las funcionalidades no se prueban adecuadamente.
“...pero si funciona en mi máquina...”
Las pruebas toman tiempo y aburren.
Sorpresas tras el despliegue.
¿Qué es Integración Continua?
La Integración Continua es una serie de prácticas de desarrollo de software en el que los miembros de un equipo integran su trabajo con frecuencia, generalmente cada persona se integra una vez al día lo cual resulta en múltiples integraciones diarias. Cada integración es verificada por un build automatizado (incluyendo las pruebas) para detectar errores de integración tan rápido como sea posible.
Muchos equipos encuentran que este enfoque conduce a reducir problemas de integración de forma significativa y permite desarrollar software cohesivo con mayor rapidez.
Martin Flowerhttp://www.martinfowler.com/articles/continuousIntegration.html
Beneficios de la Integración Continua
• Reducción de riesgos• Reducción de procesos manuales repetitivos• Genera software desplegable en cualquier momento• Permite una mejor visibilidad del proyecto• Aumenta la confianza en el producto entregado por el
equipo de desarrollo
Beneficios de la Integración Continua
• Reducción de riesgos• Reducción de procesos manuales repetitivos• Genera software desplegable en cualquier momento• Permite una mejor visibilidad del proyecto• Aumenta la confianza en el producto entregado por el
equipo de desarrollo
Beneficios de la Integración Continua
• Reducción de riesgos• Reducción de procesos manuales repetitivos• Genera software desplegable en cualquier momento• Permite una mejor visibilidad del proyecto• Aumenta la confianza en el producto entregado por el
equipo de desarrollo
Beneficios de la Integración Continua
• Reducción de riesgos• Reducción de procesos manuales repetitivos• Genera software desplegable en cualquier momento• Permite una mejor visibilidad del proyecto• Aumenta la confianza en el producto entregado por el
equipo de desarrollo
Beneficios de la Integración Continua
• Reducción de riesgos• Reducción de procesos manuales repetitivos• Genera software desplegable en cualquier momento• Permite una mejor visibilidad del proyecto• Aumenta la confianza en el producto entregado por el
equipo de desarrollo
Beneficios de la Integración Continua
• Reducción de riesgos• Reducción de procesos manuales repetitivos• Genera software desplegable en cualquier momento• Permite una mejor visibilidad del proyecto• Aumenta la confianza en el producto entregado por el
equipo de desarrollo
Prácticas fundamentales
Subir código al repositorio frecuentementeNo subir código "roto"Corregir builds rotos inmediatamenteEscribir pruebas automatizadasTodas las pruebas deben pasarCorrer pruebas privadas
Prácticas fundamentales
Subir código al repositorio frecuentementeNo subir código "roto"Corregir builds rotos inmediatamenteEscribir pruebas automatizadasTodas las pruebas deben pasarCorrer pruebas privadas
Prácticas fundamentales
Subir código al repositorio frecuentementeNo subir código "roto"Corregir builds rotos inmediatamenteEscribir pruebas automatizadasTodas las pruebas deben pasarCorrer pruebas privadas
Prácticas fundamentales
Subir código al repositorio frecuentementeNo subir código "roto"Corregir builds rotos inmediatamenteEscribir pruebas automatizadasTodas las pruebas deben pasarCorrer pruebas privadas
Prácticas fundamentales
Subir código al repositorio frecuentementeNo subir código "roto"Corregir builds rotos inmediatamenteEscribir pruebas automatizadasTodas las pruebas deben pasarCorrer pruebas privadas
Prácticas fundamentales
Subir código al repositorio frecuentementeNo subir código "roto"Corregir builds rotos inmediatamenteEscribir pruebas automatizadasTodas las pruebas deben pasarCorrer pruebas privadas
Prácticas fundamentales
Subir código al repositorio frecuentementeNo subir código "roto"Corregir builds rotos inmediatamenteEscribir pruebas automatizadasTodas las pruebas deben pasarCorrer pruebas privadas
Repositorio de Código
Servidor de Integración Continua
Servidor CI
Build script
¿Cómo funciona?
Código listo y testeado
Sube codigo
Obtiene código
Ejecuta pruebas
Todo esta OK!
Notificando!
:)
Repositorio de CódigoServidor
CI
Build script
¿Cómo funciona?
Mmm... es hora del partido...
Sube codigoObtiene código
Ejecuta pruebas
Mal! Mal! Mal!
Notificando!
Nooooo!:'(
... no tengo tiempo para
probar
Herramientas
Hudsonhttp://hudson-ci.org/
TeamCity
http://www.jetbrains.com/teamcity/
CruiseControl
http://cruisecontrol.sourceforge.net/
phpUnderControl
http://www.phpundercontrol.org/about.html
Continuum
http://continuum.apache.org/
Bamboo
http://www.atlassian.com/software/bamboo/
Demo
Agiles 2010Lima – Perú 4 al 7 de Octubre
http://agiles2010.agiles.org/
Armando Picón Z.Twitter: @apiconzBlog: http://blog.apicon.info