¿Qué es la continuous integration?

¿Qué es la continuous integration y cuáles son sus beneficios?

Esta es de lejos la mejor explicación que he leído hasta ahora.

En su forma más simple, es simplemente un mecanismo que reconstruye su proyecto cada vez que se realiza un check in en algún sistema de control de revisión (CVS, etc.). Esto puede ampliarse para include testings de ejecución, hasta generar una image de CD, montarla en máquinas virtuales, instalar el producto y ejecutar testings completas en él.

Tiene la simple ventaja de resaltar cuando los cambios de código rompen el sistema lo antes posible. No solo detecta interrupciones en el código, sino que destaca quién causó el corte. ¡Este efecto psicológico es muy efectivo para fomentar buenas testings antes del check in!

Es la práctica de garantizar que todos los aspectos de su process de desarrollo de software estén alineados para permitir la creación diaria de una versión funcional de su producto. Es mejor conocido como parte de Extreme Programming.

Esto involucra cosas tan lejanas como la automation de compilation, testings automatizadas, check-ins diarios, uso de un repository de código fuente, etc. Pero el objective final es ayudar a que todo el proyecto se ejecute de acuerdo con los Principios básicos ágiles para que pueda entregarlo temprano y con frecuencia. Esto, a su vez, lo ayuda a aprovechar los comentarios de sus usuarios, etc.

+1 para el enlace a la página de Fowler.

Personalmente, me pareció "bueno" saber cada vez que algo no comstackba porque teníamos la mala práctica de tener una compilation única (sí, desarrollamos en la versión de producción; éramos geniales). No teníamos la fase de testing integrada antes de irme.

Después de un time, sin embargo, disminuyó la cantidad de cambios de encoding masiva (en comparación con el "check in y rezar para que mis cambios no entren en conflicto" que era desenfrenado). Eventualmente, la mayoría de los desarrolladores comenzaron a hacer pequeños cambios con frecuencia solo para get la confirmación del icono de la bandeja CC.Net.

En general, me resultó muy reconfortante saber que podríamos enviar una construcción de inmediato si era necesario. Si hubiéramos integrado algunas testings de humo, creo que el nivel de estrés habría sido sustancialmente menor.

Solo para actualizar En este punto hay una gran diferencia entre la continuous integration (CI) y la entrega continua (CD). Si bien la mayoría de los CD descritos anteriormente describen el modo en que CI extiende ahora la definición de CD. Tener todas las herramientas necesarias para crear un package y desplegar una nueva versión de la aplicación automáticamente es una parte crucial del CD. Sumando a esa automation de testing (basada en la verificación de tres niveles: verificación de estado general, statistics detalladas e inserciones históricas) y un gobierno adecuado, está creando una muy buena pieza de IC. Solo a causa de una definición tan extendida, es posible crear herramientas en la nube extraordinarias. Piense en muleESB o esbeetle.com. Para ambos, CI es algo natural, aunque solo el segundo es compatible con los componentes ESB y ETL.

Espero que haya sido útil.