Saltar a contenido

Overview

La integración continua (CI) es la práctica de automatizar la integración de los cambios de código de varios contribuidores en un único proyecto de software. Es una de las principales prácticas recomendadas de DevOps, que permite a los desarrolladores fusionar con frecuencia los cambios de código en un repositorio central donde luego se ejecutan las compilaciones y pruebas. Las herramientas automatizadas sirven para verificar que el nuevo código es correcto antes de la integración.

Un sistema de control de versiones del código fuente es el punto clave del proceso de CI. El sistema de control de versiones también se complementa con otras comprobaciones como las pruebas automatizadas de calidad del código, las herramientas de revisión de estilo de sintaxis y mucho más.

La importancia de la integración continua

Para entender la importancia de la CI, nos viene bien hablar primero de algunos puntos problemáticos que surgen a menudo por la falta de esta. Sin la CI, los desarrolladores tienen que coordinarse y comunicarse manualmente cuando aportan código al producto final. Esta coordinación va más allá de los equipos de desarrollo; llega también a los equipos de operaciones y al resto de la organización. Los equipos de producto tienen que coordinar cuándo lanzar funciones y soluciones secuencialmente, y qué miembros del equipo serán los responsables.

Los gastos generales de comunicación de un entorno sin CI pueden convertirse en una tarea de sincronización compleja y confusa, que añade costes administrativos innecesarios a los proyectos. Esto provoca publicaciones de código más lentas con una mayor tasa de fallo, puesto que los desarrolladores tienen que ser sensibles y considerados en lo que respecta a las integraciones. Los riesgos crecen exponencialmente a medida que crecen los tamaños del equipo de ingeniería y la base de código.

Sin una canalización de CI sólida, puede crearse una desconexión entre el equipo de ingeniería y el resto de la organización. La comunicación entre el equipo de producto y el de ingeniería puede ser engorrosa. La ingeniería se convierte en una caja negra en la que el resto del equipo solicita requisitos y funciones, y a lo mejor obtiene los resultados esperados. Hace más difícil para los ingenieros estimar el tiempo de la entrega de las solicitudes, porque el tiempo para integrar los nuevos cambios se convierte en un riesgo desconocido.

Qué hace el CI

El CI ayuda a escalar el resultado de plantilla y entrega de los equipos de ingeniería. Si se introduce el CI en el escenario mencionando anteriormente, los desarrolladores de software pueden trabajar independientemente en las funciones de forma paralela. Cuando estén listos para fusionar estas funciones en el producto final, lo pueden hacer de forma independiente y rápida. El CI es una práctica valiosa y bien establecida en las organizaciones de ingeniería de software modernas y de alto rendimiento.

Ejemplo de flujo CI

ci

Comparación de CI con la implementación continua y la entrega continua

La integración, la implementación y la entrega continuas son tres fases de una canalización de publicación de software automatizado, incluida una canalización de DevOps. Estas tres fases llevan el software de la idea a la entrega y al usuario final. La fase de integración es el primer paso en el proceso. La integración continua abarca el proceso de varios desarrolladores intentando fusionar sus cambios de código con el repositorio de código principal de un proyecto.

La entrega continua es la siguiente extensión de la integración continua. La fase de entrega se encarga de empaquetar un artefacto para entregarlo a los usuarios finales. Esta fase ejecuta herramientas de compilación automatizadas para generar el artefacto. Esta fase de compilación se mantiene “verde”, lo que significa que el artefacto debería estar listo para su implementación a los usuarios en cualquier momento.

La implementación continua es la fase final de la canalización. La fase de implementación se encarga de lanzar y distribuir automáticamente el artefacto de software a los usuarios finales. En el momento de la implementación, el artefacto ha superado correctamente las fases de integración y entrega. Ahora es el momento de implementar o distribuir automáticamente el artefacto. Esto se producirá mediante scripts o herramientas que mueven automáticamente el artefacto a servidores públicos o a otro mecanismo de distribución, como una tienda de aplicaciones.

Más info aquí