-
Introducción
-
Integrar es difícil
- Número de bugs
- Número de componentes
- Tiempo desde la última integración
- Nos gustaría evitar integrar
-
Reemplazar grandes y largas fases de integración
- Por pequeñas y frecuentes
- Minimizar el esfuerzo de integración
-
Componentes
- Developer
- Version Control Repository
- Continuous Integration Server
- Build Script
- Feedback Mechanism
-
Ventajas
-
Reduce riesgos
- Falta de un software desplegable
- Descubrimiento tardío de los defectos
- Falta de visibilidad en el proyecto
- Baja calidad del software
-
Reduce procesos manuales repetitivos
- No hay puntos de integración
- Los builds ya no son eventos
- Genera software desplegable en cualquier momento y lugar
- Habilita la visibilidad del proyecto
- Aumenta la confianza del software en el equipo
- Mejora la calidad del software
-
Prácticas
- Un solo repositorio
- Build automático
- Tests automáticos
- Todos deben hacer commit a diario
- Build rápido
- El ambiente de testing debe ser un clon de producción
- Obtener el último ejecutable debe ser fácil
- Todos pueden ver que está sucediendo
- Deploy automático
-
Continuous Database Integration
- Automatizar la integración con la BD
- Usar un sandbox para la BD
- Utilizar un repositori para compartir los scripts de BD
- El equipo de desarrollo puede modificar la BD
- El DBA debe ser parte del equipo de desarrollo
-
Continuous Testing
-
Automatizar los tests
- Unit Tests
- Component Tests
- System Tests
- Functional Tests
- Categorizar los tests
- Correr los tests rápidos primero
- Escribir los tests para los defectos
- Limitar los asserts en cada test
-
Continuous Inspection
- Reducir la complejidad de código
- Realizar revisiones de diseño continuas
- Mantener los estándares con auditorías de código
- Reducir el código duplicado
- Evaluar la cobertura de código
-
Continuous Deployment
-
Desplegar software funcionando
- En cualquier momento
- En cualquier lugar
- Etiquetar los artefactos del repositorio
- Producir un ambiente limpio
- Etiquetar los builds
- Correr todos los tests
- Crear reportes con feedback del build
- Capacidad de hacer un rollback del release
-
Continuous Feedback
- Utilizar mecanismos de feedback
- Información correcta
- Personas correctas
- Vía correcta
- Momento correcto
-
Madurez
- CI Maturity
-
Servidores CI
-
Hudson
- http://hudson-ci.org/
-
Continuum
- http://continuum.apache.org/
-
Cruise Control
- http://cruisecontrol.sourceforge.net/
-
CruiseControl.NET
- http://confluence.public.thoughtworks.org/display/CCNET
-
TeamCity
- http://www.jetbrains.com/teamcity/
-
Referencias
- Paul M. Duvall, Continuous Integration, Addison Wesley 2009
- http://martinfowler.com/articles/continuousIntegration.html
- http://www.anthillpro.com/blogs/anthillpro-blog/2009/05/05/1241542860000.html
- http://www.slideshare.net/drluckyspin/continuous-integration
- http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix
- http://www.integratebutton.com/
-
Acerca de
- Topic
- Topic