• XP: Continuous Integration

    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

  • All Comments ( 0 )

    XP: Continuous Integration

    Added: 2011-04-29 22:16:59

    From: lshimokawa (Joined 2009-12-01 22:08:05)

    12 views |0 downloads

    XP: Continuous Integration

    More From: lshimokawa

    Kanban
    Kanban
    2011-11-12 16:31:26|534 views
    Lean Software Development
    Lean Software Development
    2011-11-09 01:27:21|915 views
    Agile Retrospectives
    Agile Retrospectives
    2011-10-29 01:34:44|36 views
    Scrum
    Scrum
    2011-10-19 20:29:40|580 views
    Agile Estimating and Planning
    Agile Estimating and Planning
    2011-10-18 23:12:09|439 views
    Agile Manifesto
    Agile Manifesto
    2011-10-18 01:08:23|81 views
    SOA Governance
    SOA Governance
    2011-10-06 21:11:38|9 views
    Messaging
    Messaging
    2011-10-04 20:49:55|78 views
    ESB
    ESB
    2011-06-10 00:58:10|84 views
    BPEL
    BPEL
    2011-06-09 20:43:51|74 views
    Design Patterns
    Design Patterns
    2011-06-09 00:30:13|15 views
    REST
    REST
    2011-05-31 05:17:28|69 views
    Web Services
    Web Services
    2011-05-09 22:17:13|117 views
    Service Oriented Architecture
    Service Oriented Architecture
    2011-05-05 23:16:09|577 views
    Sistemas Distribuidos
    Sistemas Distribuidos
    2011-05-05 00:17:34|199 views
    XP: String Calculator Kata
    XP: String Calculator Kata
    2011-04-29 23:42:24|96 views
    Agile Testing
    Agile Testing
    2011-04-29 23:34:44|54 views
    Calidad de Software
    Calidad de Software
    2011-04-29 23:34:12|444 views
    XP: Test Driven Development
    XP: Test Driven Development
    2011-04-29 22:17:41|27 views
    XP: Continuous Integration
    XP: Continuous Integration
    2011-04-29 22:16:59|12 views
    Enseñando ágilmente
    Enseñando ágilmente
    2010-10-05 16:49:57|776 views
    Spring Core
    Spring Core
    2010-09-23 16:11:48|63 views
    Arquitectura Web
    Arquitectura Web
    2010-09-10 21:22:01|180 views
    Struts 2
    Struts 2
    2010-08-18 23:50:33|63 views
    Spring JDBC
    Spring JDBC
    2010-08-11 01:52:17|33 views
    JavaSE: Exception
    JavaSE: Exception
    2010-08-11 01:35:49|24 views
    MVC
    MVC
    2010-08-11 00:39:04|48 views
    Logging
    Logging
    2010-08-05 02:37:21|6 views
    Design Principles
    Design Principles
    2010-07-30 23:36:59|9 views
    Acceptance Test Driven Development
    Acceptance Test Driven Development
    2010-07-30 23:35:04|54 views
    Agile: User Stories
    Agile: User Stories
    2010-07-30 23:33:09|142 views
    Apache Maven
    Apache Maven
    2010-07-30 23:31:47|148 views
    iBatis
    iBatis
    2010-07-30 23:00:20|9 views
    Object Relational Mapping
    Object Relational Mapping
    2010-07-28 00:27:19|30 views
    Aspect Oriented Programming
    Aspect Oriented Programming
    2010-07-09 21:30:41|903 views
    JavaEE: EJB
    JavaEE: EJB
    2010-06-28 14:10:51|36 views
    Extreme Programming
    Extreme Programming
    2010-06-17 20:19:25|2447 views
    Desarrollo para Entorno Web
    Desarrollo para Entorno Web
    2010-06-17 20:19:09|214 views
    JavaSE: JDBC
    JavaSE: JDBC
    2010-06-17 20:00:41|36 views
    JavaEE: Persistencia
    JavaEE: Persistencia
    2010-06-17 19:58:53|30 views
    JavaEE: Session Beans
    JavaEE: Session Beans
    2010-06-17 19:58:37|21 views
    AJAX
    AJAX
    2010-06-17 19:42:19|51 views
    JavaEE: JSP
    JavaEE: JSP
    2010-06-17 19:40:38|36 views
    JavaEE: Servlets
    JavaEE: Servlets
    2010-06-17 19:39:45|52 views
    JavaEE: Arquitectura
    JavaEE: Arquitectura
    2010-06-17 19:37:13|255 views
    JavaEE: Web
    JavaEE: Web
    2010-06-17 19:37:04|9 views
    XP: Simple Design
    XP: Simple Design
    2010-06-12 07:03:51|0 views
    XP: Refactoring
    XP: Refactoring
    2010-06-12 07:03:16|3 views
    XP: Pair Programming
    XP: Pair Programming
    2010-06-12 07:02:57|27 views
    XP: Collective Code Ownership
    XP: Collective Code Ownership
    2010-06-12 07:00:16|730 views
    Spring Core Kata
    Spring Core Kata
    2010-06-10 18:11:55|2527 views
    Domain Driven Design
    Domain Driven Design
    2010-05-19 22:29:33|1632 views