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