CI o integración continua es la práctica de automatizar la integración de cambios de código de múltiples desarrolladores en una sola base de código. Es una práctica de desarrollo de software en la que los desarrolladores envían su trabajo con frecuencia al repositorio de código central (Github o Stash). Luego, hay herramientas automatizadas que construyen el código recién comprometido y hacen una revisión del código, etc., según sea necesario en la integración.
Los objetivos clave de la integración continua son encontrar y abordar errores más rápido, facilitar el proceso de integración de código en un equipo de desarrolladores, mejorar la calidad del software y reducir el tiempo que se tarda en lanzar nuevas actualizaciones de funciones. Algunas herramientas populares de CI son Jenkins, TeamCity y Bamboo.
¿Por qué CI?
Podría haber escenarios en los que los desarrolladores en un equipo trabajen de forma aislada durante un período prolongado de tiempo y solo combinen sus cambios en la rama maestra una vez que se haya completado su trabajo. Esto no solo hace que la fusión del código sea muy difícil, propensa a conflictos y lenta, sino que también genera errores que se acumulan durante mucho tiempo y que solo se identifican en etapas posteriores del desarrollo. Estos factores dificultan la entrega rápida de actualizaciones a los clientes.
Con la integración continua, los desarrolladores suelen comprometerse con un repositorio común compartido mediante un sistema de control de versiones como Git. Una canalización de integración continua puede ejecutar automáticamente compilaciones, almacenar artefactos, ejecutar pruebas unitarias e incluso realizar revisiones de código utilizando herramientas como Sonar. Podemos configurar la canalización de CI para que se active cada vez que haya una confirmación/fusión en el código base.
¿Cómo funciona la IC?
A continuación se muestra una representación pictórica de una canalización de CI: el flujo de trabajo desde que los desarrolladores verifican su código hasta su compilación automatizada, prueba y notificación final del estado de compilación.
Una vez que el desarrollador envía su código a un sistema de control de versiones como Git, activa la canalización de CI que obtiene los cambios y ejecuta pruebas unitarias y de compilación automatizadas. Según el estado del paso, el servidor notifica al desarrollador en cuestión si la integración del nuevo código con el código base existente fue un éxito o un fracaso.
Esto ayuda a encontrar y abordar los errores mucho más rápido, hace que el equipo sea más productivo al liberar a los desarrolladores de las tareas manuales y ayuda a los equipos a entregar actualizaciones a sus clientes con mayor frecuencia. Se ha descubierto que la integración de todo el ciclo de desarrollo puede reducir el tiempo del desarrollador en ~25 – 30 %.
CD o entrega continua
CD o Entrega continua se lleva a cabo después de la Integración continua para asegurarnos de que podemos lanzar nuevos cambios a nuestros clientes rápidamente y sin errores. Esto incluye ejecutar pruebas de integración y regresión en el área de preparación (similar al entorno de producción) para que la versión final no se rompa en producción. Garantiza la automatización del proceso de lanzamiento para que tengamos un producto listo para el lanzamiento en todo momento y podamos implementar nuestra aplicación en cualquier momento.
Continuous Delivery automatiza todo el proceso de lanzamiento de software. La decisión final de implementar en un entorno de producción en vivo puede tomarla el desarrollador/líder del proyecto según sea necesario. Algunas herramientas de CD populares son AWS CodeDeploy, Jenkins y GitLab.
¿Por qué CD?
La entrega continua ayuda a los desarrolladores a probar su código en un entorno similar al de producción, lo que evita sorpresas de último momento o posteriores a la producción. Estas pruebas pueden incluir pruebas de interfaz de usuario, pruebas de carga, pruebas de integración, etc. Ayuda a los desarrolladores a descubrir y resolver errores de manera preventiva.
Al automatizar el proceso de lanzamiento de software, CD contribuye a lanzamientos de bajo riesgo, costos más bajos, mejor calidad de software, mejores niveles de productividad y, lo que es más importante, nos ayuda a entregar actualizaciones a los clientes con mayor rapidez y frecuencia. Si la entrega continua se implementa correctamente, siempre tendremos un código listo para implementar que haya pasado por un proceso de prueba estandarizado.
¿Cómo funcionan juntos CI y CD?
La siguiente imagen describe cómo la integración continua combinada con la entrega continua ayuda a acelerar el proceso de entrega de software con menos riesgos y una calidad mejorada.
Hemos visto cómo la integración continua automatiza el proceso de creación, prueba y empaquetado del código fuente tan pronto como los desarrolladores lo envían al repositorio de código. Una vez que se completa el paso de CI, el código se implementa en el entorno de prueba donde se somete a más pruebas automatizadas (como pruebas de aceptación, pruebas de regresión, etc.). Finalmente, se implementa en el entorno de producción para el lanzamiento final del producto.
Si la implementación en producción es un paso manual, el proceso se denomina Entrega continua, mientras que si el proceso de implementación en el entorno de producción está automatizado, se denomina Implementación continua.
Publicación traducida automáticamente
Artículo escrito por SAKSHIKULSHRESHTHA y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA