Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=1724dc70-4ca8-4fd4-a50c-9237ed61b941

Integración continua: qué es y por qué deberías aprender a utilizarla cuanto antes

Imagen ornamental CC0 por Waldemar Brandt en Unsplash

En el mundo del software, palabras como integración continua o despliegue continuo (CI/CD) están a la orden del día. Se da por supuesto que todos los que estamos metidos en este gremio conocemos su significado y sus ventajas, pero la triste realidad es que no es así. Mucha gente no lo conoce y otra lo conoce y no lo aplica.

Por esa razón, en el artículo de hoy voy a intentar aclarar las ventajas que nos ofrece el concepto, para aseverar que, sin lugar a dudas, para hacer software de calidad, la integración continua es un requisito necesario y no negociable.

¿Qué es la integración continua (CI)?

Para poder hablar de sus ventajas, lo primero es conocer en qué consiste. La integración continua es el nombre que se le da a la automatización de las labores de compilación, test y análisis estático del código. Esto se puede conseguir de muchas maneras, y podemos llamar integración continua a todo lo que hay entre un script que periódicamente ejecuta el trabajo y un servicio online que lo haga.

La integración continua (continuous integration en inglés) es un modelo informático propuesto inicialmente por Martin Fowler que consiste en hacer integraciones automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes. Entendemos por integración la compilación y ejecución de pruebas de todo un proyecto. (Wikipedia)

¿Cómo funciona?

Independientemente del sistema que utilicemos para iniciarlo (tarea programada, un Webhook, etc), el proceso como mínimo seguirá el siguiente camino:

La imagen muestra el flujo de trabajo de la integración continua

  1. Descargará el código fuente desde el repositorio de control de versiones (git, SVN, Mercurial...).
  2. Compilará el código según sea necesario.
  3. Realizará las pruebas unitarias y/o de integración.
  4. Publicará los resultados de modo que sea accesibles.

Dependiendo de lo integrado que esté el servicio con el repositorio de código, podemos verlo directamente en el historial de commits. Por ejemplo en el caso de GitHub:

La imagen muestra un ejemplo de la integración de los resultados en github

¿Cuándo debería ejecutarla?

Lo ideal, es ejecutarla siempre que se añadan cambios al repositorio principal. Pero esto tiene un coste. Compilar cada cambio que hacemos nos da cierta seguridad, pero puede hacer que nuestro sistema de CI trabaje más de la cuenta y suponga un coste adicional. En cambio, aplicarla a todos los pull request nos garantiza que todos los cambios sobre la línea principal de trabajo van a funcionar bien. Aquí se trata de encontrar un equilibrio entre coste y beneficio.

Si nuestro proyecto es Open Source, existen varios servicios de integración continua online gratuitos como Travis CI, AppVeyor, Azure Pipelines, Circle CI.

¿Y qué me aporta?

Las principales ventajas que tiene son:

  • Detectar rápidamente los posibles errores de compilación de nuestro código. (en mi máquina funcionaba...)
  • Detectar funcionamientos anómalos en nuestro software. (es un bug, no una nueva característica)
  • Mejorar la calidad de nuestros productos
  • Nos permite compilar/testear nuestro código en diferentes plataformas.

En conclusión

Con el gran abanico de posibilidades que existen hoy en día para poder añadir integración continua a nuestro código, no hacerlo no es una opción. Da igual si es un proyecto grande o pequeño, da igual si eres un único desarrollador o un equipo. Existen incluso algunas opciones gratuitas que nos permiten hacerlo.

¿Quién no ha oído nunca el "en mi máquina funcionaba"? En mi experiencia personal, es una respuesta que he oído varias veces (y yo mismo he dicho). La integración continua es una solución muy eficaz para evitar ese tipo de problemas y poder aportar valor con nuestro software sin tener que perder horas y horas (que muchas veces no se tienen) en compilar nuestro proyecto para varias plataformas, ejecutar pruebas, analizadores de código...

Jorge Turrado Jorge lleva en el mundo de la programación desde los tiempos de .Net Framework 3.0. Experto en la plataforma .NET, .NET Core y en técnicas de integración continua, trabaja desde hace varios años en el desarrollo de sistemas comerciales de visión artificial. Microsoft lo ha reconocido como MVP en tecnologías de desarrollo en 2018. Puedes seguirlo en Twitter: @JorgeTurrado o en su blog FixedBuffer Ver todos los posts de Jorge Turrado
Archivado en: Herramientas

¿Te ha gustado este post?
Pues espera a ver nuestro boletín mensual...

Suscríbete a la newsletter

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.