Integración continua
La integración continua (CI) implica producir una compilación limpia del sistema varias veces al día.
La integración continua (CI) implica generar una compilación limpia del sistema varias veces al día, generalmente con una herramienta como CruiseControl, que utiliza Ant y diversos sistemas de control de versiones. Los equipos ágiles suelen configurar la CI para incluir compilación automatizada, ejecución de pruebas unitarias e integración con el control de versiones. En ocasiones, la CI también incluye la ejecución automática de pruebas de aceptación, como las desarrolladas con FitNesse. En definitiva, la CI garantiza que la compilación sea prácticamente siempre limpia.
Técnica, herramientas y política de integración continua
Existen varias prácticas específicas que la integración continua parece requerir para funcionar correctamente. En su sitio webMartin Fowler ofrece una descripción larga y detallada de qué es la integración continua y cómo hacerla funcionar.
Una regla común de integración continua (CI) establece que los programadores nunca deben dejar nada sin integrar al final del día. La compilación nunca debe pasar la noche en un estado defectuoso. Esto impone cierta disciplina en la planificación de tareas a los equipos de programación. Además, si la regla del equipo es que quien rompa la compilación al confirmar los cambios debe corregirla, existe un incentivo natural para confirmar cambios de código con frecuencia durante el día.
Beneficios de la integración continua
Cuando la integración continua (CI) funciona correctamente, ayuda a que el código sea lo suficientemente robusto como para que los clientes y otros interesados puedan experimentar con él cuando lo deseen. Esto agiliza el flujo de trabajo de desarrollo en general; como señala Fowler, la experiencia es muy diferente. Además, fomenta una mayor retroalimentación entre programadores y clientes, lo que ayuda al equipo a perfeccionar el código antes de los plazos de cada iteración. Al igual que la refactorización, la integración continua funciona bien si se cuenta con un conjunto exhaustivo de pruebas unitarias automatizadas que garanticen que no se incluya código defectuoso en el código.
Una integración continua bien ejecutada garantiza que la integración nunca sea un problema, ya que el trabajo realizado refleja solo una ligera divergencia del código base. Si bien el equipo debe lidiar regularmente con pequeñas divergencias, nunca tendrá que enfrentarse a las realmente graves. Además, tienen la oportunidad de debatir diferentes enfoques de diseño el mismo día en que surgen, ya que la integración de ese día pone las cuestiones en conocimiento de todo el equipo.