Como muchos otros procedimientos de la metodología Agile, una de las funciones principales es la Integración Continua. Esta semana te explicaré los beneficios, mostrándote como te puede ayudar una solución como Jenkins.

Empecemos, ¿Qué es la integración continua?

La integración continua es un tipo de desarrollo muy común en los equipos de desarrollo. El objetivo principal es facilitar el trabajo a los desarrolladores con una entrega continua, realizando integraciones prácticamente diarias.

"La entrega continua es la práctica de desplegar todo el buen desarrollo de una aplicación a los usuarios."
Jez Humble, autor de Entrega Continua.

Y el trabajo en equipo, muy importante, utilizando con herramientas de versionado (git, svn, mercurial, plastic, etc).

En el desarrollo de una aplicación, la integración continua se organiza en las siguientes fases:

  1. Desarrollar nuevas integraciones o mejoras en nuestra aplicación.
  2. Compilación del código fuente, obteniendo el ‘build’.
  3. Pruebas, realizando análisis y test unitarios, con métricas de calidad para la detección preventiva de errores
  4. Despliegue y aprovisionamiento de la aplicación en el entorno que definamos, como por ejemplo test o producción.
  5. Tests funcionales y de integración, automatizados o manuales.
  6. Reportes de nuestros usuarios o automatizados con por ejemplo Sentry, New relic, etc.

En esta última fase, estos reportes generan nuevas propuestas de mejoras o necesidades, que deben evaluarse y desarrollar, generando así el ciclo de vida de la integración continua, volviendo de nuevo al punto 1.

¡Es la hora! Compila, prueba y despliega con Jenkins

Jenkins es un herramienta open source que cubre algunas de las fases del ciclo de vida de integración continua de tu aplicación. Permite a los equipos de desarrollo compilar, probar y desplegar los desarrollos. Gestionando las entregas continuas desde el código hasta el despliegue en un solo flujo de trabajo, más conocido como “Job” en entorno Jenkins.

La base de Jenkins son las tareas Jobs, desde donde podrás indicar todo el proceso hasta llegar a un build final estable. Vamos con un ejemplo:

Puedes programar un Job que se ejecute cada vez que subimos una nueva versión a Git, que este se compile y se ejecuten las pruebas.

Si el resultado no es el esperado o hay algún error, Jenkins notificará al desarrollador o a quien definas, por email u otros medios. Si la compilación es correcta, podremos indicar a Jenkins que integre el código en una rama ‘master’ del propio repositorio del control de versiones.

Una vez tenemos el código compilado, podrás indicar que se ejecuten las pruebas, con métricas de calidad y visualizar los resultados y para finalizar, podrás desplegar una versión estable del software al entorno de pruebas para ser testeado, en pre-producción o producción. Con el desarrollo disponible, solo queda esperar nuevos reportes de mejora.

¿Qué te aporta la integración continua con las herramientas indicadas?

La integración continua te aportará muchos beneficios, listemos algunos de ellos:

  • Decir adiós a las integraciones prolongadas y tensas.
  • Comprobar la calidad del desarrollo en un entorno de test.
  • Detectar fallos en la implementación.
  • Detectar comportamientos inesperados o incorrectos durante el ciclo de desarrollo.
  • Reducción de tiempo en la resolución de incidencias.
  • Conseguir un producto final estable y fiable.
  • Conocer en todo momento el estado del software en producción o en cualquier entorno de pruebas.
  • Monitorizar la calidad del código y su cobertura de pruebas.

Conclusión

No tiene sentido adoptar las herramientas sin adoptar los principios. Adoptando la Integración Continua y la Entrega Continua, la idea es que puedas reducir el riesgo y abordar los errores de forma rápida, y en fases más tempranas, además de permitir tener rápidamente software que funcione. Estos despliegues de bajo riesgo permiten que te adaptes ágilmente a las necesidades del usuario y a las de tu negocio, además de permitir una mayor colaboración entre operaciones y desarrollo. Todas las personas participantes en la creación del producto colaboran desde el inicio. Todos colaboran. De esta forma, con este Desarrollo de Operaciones tu proceso de entrega, o despliegue puede ser una ventaja comercial.

Chiyana Simōes

En definitiva, como verás son muchas ventajas las que ofrece, ¡Automatiza tu compilación, prueba y despliega! Desde ITDO te animamos a trabajar con Integración Continua.