Integración continua: descripción general
La integración continua se introdujo por primera vez en el año 2000 con el software conocido como Cruise Control. A lo largo de los años, la integración continua se ha convertido en una práctica clave en cualquier organización de software. Esta es una práctica de desarrollo que requiere que los equipos de desarrollo se aseguren de que se realice una compilación y pruebas posteriores para cada cambio de código realizado en un programa de software. Este concepto estaba destinado a eliminar el problema de encontrar incidencias tardías de problemas en el ciclo de vida de la compilación. En lugar de que los desarrolladores trabajaran de forma aislada y no se integraran lo suficiente, se introdujo la integración continua para garantizar que los cambios de código y las compilaciones nunca se hicieran de forma aislada.
¿Por qué la integración continua?
La integración continua se ha convertido en una parte muy integral de cualquier proceso de desarrollo de software. El proceso de Integración continua ayuda a responder las siguientes preguntas para el equipo de desarrollo de software.
¿Todos los componentes del software funcionan juntos como deberían? - A veces, los sistemas pueden volverse tan complejos que existen múltiples interfaces para cada componente. En tales casos, siempre es fundamental asegurarse de que todos los componentes del software funcionen a la perfección entre sí.
¿Es el código demasiado complejo para fines de integración? - Si el proceso de integración continua sigue fallando, podría existir la posibilidad de que el código sea demasiado complejo. Y esto podría ser una señal para aplicar patrones de diseño adecuados para hacer que el código sea menos complejo y más fácil de mantener.
¿El código se adhiere a los estándares de codificación establecidos? - La mayoría de los casos de prueba siempre comprobarán que el código se adhiere a los estándares de codificación adecuados. Al hacer una prueba automatizada después de la compilación automatizada, este es un buen punto para verificar si el código cumple con todos los estándares de codificación deseados.
¿Cuánto código cubren las pruebas automatizadas? - No tiene sentido probar el código si los casos de prueba no cubren la funcionalidad requerida del código. Por lo tanto, siempre es una buena práctica asegurarse de que los casos de prueba escritos cubran todos los escenarios clave de la aplicación.
¿Fueron satisfactorias todas las pruebas después del último cambio? - Si una prueba falla, entonces no tiene sentido continuar con la implementación del código, por lo que este es un buen punto para verificar si el código está listo para pasar a la etapa de implementación o no.
Flujo de trabajo
La siguiente imagen muestra un flujo de trabajo rápido de cómo funciona todo el flujo de trabajo de integración continua en cualquier proyecto de desarrollo de software. Veremos esto en detalle en los capítulos siguientes.
Entonces, según el flujo de trabajo anterior, generalmente así es como funciona el proceso de integración continua.
Primero, un desarrollador confirma el código en el repositorio de control de versiones. Mientras tanto, el servidor de integración continua en la máquina de construcción de integración sondea el repositorio de código fuente en busca de cambios (por ejemplo, cada pocos minutos).
Poco después de que se produzca una confirmación, el servidor de integración continua detecta que se han producido cambios en el repositorio de control de versiones, por lo que el servidor de integración continua recupera la última copia del código del repositorio y luego ejecuta un script de compilación, que integra el software.
El servidor de integración continua genera comentarios enviando por correo electrónico los resultados de la compilación a los miembros especificados del proyecto.
Luego, se realizan pruebas unitarias si se aprueba la construcción de ese proyecto. Si las pruebas tienen éxito, el código está listo para implementarse en el servidor de ensayo o de producción.
El servidor de Integración continua continúa sondeando los cambios en el repositorio de control de versiones y todo el proceso se repite.