La integración continua como término se refiere a dos ideas distintas.
El primero es un flujo de trabajo: en lugar de que todos en un equipo trabajen en su propia sucursal y luego, después de un par de semanas de programación, intenten fusionar sus cambios en la línea principal, esos cambios se integran (casi) continuamente. Esto permite que los problemas surjan temprano y evita cambios incompatibles. Sin embargo, eso requiere que podamos verificar fácilmente si un cambio "funciona".
Aquí es donde entra la segunda idea, que resultó mucho más popular. Un servidor CI es un entorno limpio donde los cambios se prueban lo más rápido posible. El ambiente limpio es necesario para que la construcción sea reproducible. Si funciona una vez, siempre debería funcionar. Esto evita problemas "pero funcionó en mi máquina". En particular, un servidor CI es valioso cuando su software se ejecuta en diferentes sistemas o en diferentes configuraciones y debe asegurarse de que todo funcione.
La falta de un paso de construcción es irrelevante. Sin embargo, CI solo tiene sentido si tiene un conjunto de pruebas. Este conjunto de pruebas debe ser automático y no debe tener fallas. Si las pruebas fallan, el desarrollador apropiado debería recibir una notificación para que puedan solucionar el problema que introdujeron ("romper la compilación", incluso cuando no hay compilación como compilación).
Resulta que dicho servidor es valioso para algo más que solo pruebas. De hecho, la mayoría del software de CI es realmente malo para ejecutar pruebas en varias configuraciones, pero bueno para administrar todo tipo de trabajos. Por ejemplo, además de las pruebas unitarias "continuas", podría haber una prueba completa como una construcción nocturna. El software se puede probar con múltiples versiones de Python, diferentes versiones de biblioteca. Un sitio web podría ser probado para enlaces muertos. Podemos ejecutar análisis estáticos, verificadores de estilo, herramientas de cobertura de prueba, etc. sobre el código. Se puede generar documentación. Cuando pasan todas las suites de prueba, el proceso de empaquetado puede iniciarse para que esté listo para lanzar su software. Esto es útil en una configuración ágil donde desea un producto desplegable (y demoable) en todo momento. Con el auge de las aplicaciones web, también existe la idea de una implementación continua: Si pasan todas las pruebas, podemos impulsar automáticamente los cambios a producción. Por supuesto, esto requiere que tenga mucha confianza en su conjunto de pruebas (si no, tiene problemas más grandes).