Inicio Topics Integración continua ¿Qué es la integración continua?
La integración continua es un proceso de desarrollo de software en el que los desarrolladores integran código nuevo en la base de código al menos una vez al día.
Fondo negro y azul
¿Qué es la integración continua?

La integración continua es un proceso de desarrollo de software en el que los desarrolladores integran el código nuevo que han escrito con una mayor frecuencia a lo largo del ciclo de desarrollo, y lo añaden a la base de código al menos una vez al día. Se realizan pruebas automáticas en cada iteración de la compilación para identificar los problemas de integración con más rapidez, cuando son más fáciles de solucionar, para así evitar problemas en la fusión final para la publicación. En general, la integración continua permite optimizar el proceso de compilación y obtener así un software de mayor calidad y unas planificaciones de entrega más previsibles.

Integración continua y DevOps

Por definición, DevOps describe un proceso de desarrollo de software y un cambio de cultura de la organización que acelera la entrega de software de alta calidad mediante la automatización y la integración de las tareas de los equipos de desarrollo y operaciones de TI, dos grupos que tradicionalmente operan por separado o en silos.

En la práctica, los mejores procesos y culturas de DevOps no se limitan al desarrollo y las operaciones, e incorporan entradas de todas las partes interesadas de la aplicación (como diseño de plataforma e infraestructura, seguridad, conformidad, gobierno, gestión de riesgos, línea de negocio, usuarios finales y clientes) en el ciclo de vida de desarrollo de software. 

En la infraestructura de DevOps, la integración continua es la primera medida del proceso de desarrollo de software, y en ella se incorpora el código al menos una vez al día para evitar que las copias locales se desvíen demasiado de la rama principal de la compilación de código. De este modo, se evitan conflictos fatales de fusión que podrían "romper" la compilación y que el equipo podría tardar horas o días en solucionar.

La integración continua actúa como requisito previo de las etapas de prueba, despliegue y publicación de la entrega continua. Todo el equipo de desarrollo sabrá si ha creado algún código incorrecto tan solo unos minutos después de haberlo incorporado, ya que el servicio de integración continua crea y prueba automáticamente los cambios de código en busca de cualquier error.

Diferencias entre integración continua (CI), entrega continua (CD) y despliegue continuo

La entrega continua y el despliegue continuo siguen a la integración continua en el ciclo de DevOps. 

La entrega continua (CD) retoma el proceso donde finaliza la integración continua y automatiza la entrega de aplicaciones a los entornos de infraestructura seleccionados. La CD se centra en entregar cualquier cambio validado de la base de código (actualizaciones, correcciones de errores e incluso nuevas características) a los usuarios de la forma más rápida y segura posible. Garantiza la automatización del envío de los cambios del código a los diferentes entornos, como desarrollo, pruebas y producción.

En el despliegue continuo, los cambios de código que se realizan en las aplicaciones se publican automáticamente en el entorno de producción. Esta automatización se basa en una serie de pruebas predefinidas. Una vez que las nuevas actualizaciones pasan esas pruebas, el sistema envía las actualizaciones directamente a los usuarios del software.

Ventajas de la integración continua

Entre las ventajas de integración continua que más se suelen mencionar, se incluyen:

  • Detección temprana y mejorada de errores, y métricas que le permiten abordar los errores a tiempo, a veces tras solo unos minutos de la incorporación

  • Progreso continuo y demostrado para mejorar el feedback

  • Mejor colaboración en equipo; todos los miembros del equipo pueden cambiar el código, integrar el sistema y determinar rápidamente los conflictos con otras partes del software

  • Integración mejorada del sistema, lo que reduce las sorpresas al final del ciclo de vida de desarrollo del software

  • Menos cambios paralelos para la fusión y las pruebas

  • Menor número de errores durante las pruebas del sistema

  • Sistemas actualizados constantemente en los que realizar las pruebas
Integración continua y Agile

Agile es una práctica de desarrollo de software que mejora la forma que tienen los equipos de desarrollo de software de organizarse, adaptarse a los cambios en los requisitos y publicar software. Puesto que la integración continua (enlace externo a IBM) y el desarrollo ágil comparten muchas características (por ejemplo, la automatización de pruebas), resulta útil comentar ambos métodos al mismo tiempo. Agile organiza el desarrollo en grupos más pequeños de trabajo o sprints. Cuando se aplican en DevOps, estas prácticas combinadas permiten garantizar la calidad del software y la flexibilidad del proyecto.

La integración continua requiere que se integre el trabajo con frecuencia, a menudo varias veces al día. La integración se verifica mediante una compilación automatizada que detecta los errores de integración lo antes posible. La compilación debe incluir pruebas de ejecución como parte de la verificación. La evolución natural de la ampliación de las pruebas rápidas a las pruebas de tiempo de ejecución en un entorno de pruebas automatizado es la entrega continua.

Agile (enlace externo a IBM) también es iterativo y se adapta a los cambios para poder escalar y desarrollar las soluciones con el tiempo. En el contexto de la integración continua, el desarrollo de software ágil consiste en entregar iteraciones de software según la prioridad de valor que dé a las características mientras integra de forma continua.

Herramientas de integración continua de código abierto

Entre las herramientas de integración continua de código abierto más populares, se incluyen:

  • Jenkins: Jenkins, una herramienta de integración continua de código abierto ampliamente utilizada, permite a los desarrolladores compilar, integrar y probar código automáticamente en el momento en que lo confirman en el repositorio de origen, lo que facilita a los desarrolladores detectar los errores a tiempo y desplegar el software más rápido. El plugin de Docker está disponible en Jenkins.

  • Buildbot: Buildbot puede automatizar todos los aspectos del ciclo de desarrollo de software. Como sistema de planificación de trabajos, pone en cola y ejecuta trabajos, e informa de los resultados.

  • Go: Go destaca entre los demás por el concepto de conductos, que facilitan el modelado de flujos de trabajo de compilación complejos.

  • Travis CI: se trata de una de las soluciones alojadas más antiguas y fiables, que también está disponible en una versión local para la empresa.

  • GitLab CI: GitLab CI, una parte integral del proyecto Rails de código abierto, es un servicio alojado gratuito que proporciona una gestión detallada del repositorio git con funciones como control de acceso, seguimiento de problemas o revisiones de código, entre otras.

Realizar la integración continua con herramientas de código abierto ofrece muchas ventajas, como por ejemplo:

  • Cientos de plugins que pueden ser útiles para su proyecto

  • Amplia compatibilidad con lenguajes de código abierto, como Python, Java y JavaScript

  • Es gratuito, y proporciona a los estudiantes, startups y desarrolladores una herramienta potente sin pasarse del presupuesto

  • Personalización, que permite a los desarrolladores usar la base de una herramienta de CI y crear en ella para que responda a sus necesidades

  • La capacidad de modificar y redistribuir las herramientas

Las herramientas de integración continua de código abierto que debe tener en cuenta para el flujo de trabajo de desarrollo de software incluyen Jenkins, Go, Buildbot y Travis CI. Tiene más información sobre ellas en la sección siguiente.

Servidores de integración continua

Un servidor de integración continua es una herramienta de software que centraliza todas las operaciones de integración continua y proporciona una plataforma fiable y estable para poder crear sus proyectos. Puede configurar y ajustar los servidores de CI para crear varios proyectos para distintas plataformas. Los servidores de integración continua modelan y visualizan fácilmente flujos de trabajo complejos (lo que permite la entrega continua) y proporcionan una interfaz intuitiva para crear conductos de entrega continua. Los servidores de integración continua ofrecen las posibilidades siguientes:

  • Ejecutar compilaciones, pruebas y publicaciones automáticas en un solo lugar

  • Desplegar cualquier versión, en cualquier momento

  • Mantener un orden de configuración

  • Admitir plugins para mejorar la funcionalidad

  • Supervisar el repositorio del proyecto

  • Extraer cambios y realizar tareas que haya definido para que la confirmación sea correcta

  • Enviar comentarios a los miembros del proyecto pertinentes con detalles de la compilación
Ejemplo de caso de uso de integración continua

El siguiente caso de uso hipotético ilustra cómo dos desarrolladores de software pueden utilizar la integración continua para mejorar su proceso de DevOps.

Los dos desarrolladores deben comunicarse entre sí y comentar en qué características van a trabajar y cómo. Este pequeño equipo necesita actualizaciones regulares y debe ser capaz de integrar y probar su código como un todo. Planificar la incorporación y las pruebas del código requiere mucho tiempo de desarrollo. Se necesita un sistema automático para la integración continua.

Negociar cuándo se deben producir estas combinaciones y pruebas supondría mucho tiempo para los desarrolladores. Tendrían que acordar lo siguiente:

  1. Cuándo empezar a probar la integración de código
  2. Cómo probar que la integración se ha realizado correctamente
  3. Cómo comunicar los resultados al equipo

Las plataformas de integración continua tienen respuestas predeterminadas a estas preguntas, y la mayoría de ellas permite la configuración.

Normalmente, en las plataformas de CI como Jenkins, se inician las pruebas de integración durante la incorporación. Cuando se incorpora el código nuevo, el sistema de CI ejecuta una serie de pruebas, que pueden incluir pruebas de unidad y pruebas de regresión y, a continuación, se determina si el código se ha integrado correctamente.

O bien, si utiliza un lenguaje compilado, la prueba predeterminada será si el código se compila correctamente. Si no es así, significa que el código nuevo ha roto la compilación. Para lenguajes como Python o JavaScript, debe crear su propia prueba de integración.

De cualquier forma, la mayoría de los sistemas de CI registran los intentos de integración, la tasa de éxito y otras métricas.

Pruebas y prácticas recomendadas

La importancia de las pruebas

Las pruebas continuas empiezan cuando se generan una compilación de integración continua y un paquete (también conocido como entidad instalable o entidad empaquetada), y acaban cuando la entidad empaquetada pasa a producción. Cada paso, de principio a fin, implica un conjunto de pruebas.

Como mínimo, cuando solo tiene una etapa de prueba, el 30 por ciento de la integración continua implica la realización de pruebas. En realidad, las actividades de integración continua se componen de pruebas en un 50-70 por ciento. Antes era necesario realizar las pruebas manualmente. Ahora puede utilizar pruebas automatizadas: la clave para que la integración continua sea eficaz.

Como parte de la automatización de las pruebas para la integración continua, el desarrollo basado en pruebas crea código de forma iterativa y prueba los casos de uso uno por uno para garantizar la cobertura de la prueba, mejorar la calidad del código y establecer las bases para la entrega continua. Las pruebas automatizadas le indican si el código nuevo no ha pasado alguna de las pruebas desarrolladas en todas las áreas funcionales de la aplicación. Como práctica recomendada, los desarrolladores ejecutan todas las pruebas o un subconjunto de ellas en sus entornos locales, de modo que se garantiza que los desarrolladores solo confirmen el código fuente al control de versiones una vez que los nuevos cambios de código pasen las pruebas. La experiencia muestra que las pruebas de regresión eficaces pueden evitar sorpresas desagradables más adelante.

Conducto de integración continua

Los conductos de integración continua automatizan las etapas del conducto de un proyecto, tales como compilaciones, pruebas y despliegues de una manera repetible, con una intervención humana mínima. Automatizar el conducto de integración continua es esencial para agilizar el desarrollo, las pruebas y el despliegue de las aplicaciones facilitando controles, puntos de comprobación y velocidad.

Prácticas recomendadas de integración continua

El proceso de integración continua es un componente fundamental de DevOps que le permite unificar sus equipos de desarrollo y operaciones en un repositorio compartido para codificar, probar, desplegar y dar soporte al software. A continuación, se muestran algunas de las mejores prácticas de CI que pueden ayudarle a tener éxito:

  • Mantener un único repositorio de código fuente: utilice la gestión de control de origen para realizar un seguimiento y controlar todos los archivos para crear un producto. Esta base de código consolidada facilita la distribución y la visibilidad.

  • Automatizar la compilación: implica compilar, enlazar y otros procesos que producen los artefactos de compilación. Las autopruebas también se deben automatizar.

  • Utilizar confirmaciones diarias de la secuencia principal: imponga a los desarrolladores que confirmen los cambios en la secuencia de desarrollo principal al menos una vez al día. Cada desarrollador debe verificar que su copia de trabajo sea coherente con la secuencia de desarrollo principal.

  • Probar en un clon del entorno de producción: genere un entorno de pruebas lo más parecido posible a su entorno de producción final.

  • Automatizar el despliegue: implemente varios entornos (desarrollo, integración, producción) para ejecutar compilaciones y pruebas.
Soluciones relacionadas
IBM UrbanCode Build

Facilite la configuración y la ejecución de compilaciones de software con la herramienta IBM UrbanCode Build, una solución de gestión de compilaciones de clase empresarial que utiliza un sistema basado en plantillas.

Explore IBM UrbanCode Build
Recursos ¿Qué es DevOps?

DevOps acelera la entrega de software de alta calidad combinando y automatizando el trabajo de los equipos de desarrollo de software y de operaciones de TI.

¿Qué es la entrega continua?

La entrega continua automatiza la entrega de aplicaciones a entornos de prueba y producción.

¿Qué es CI/CD y qué es el conducto de CI/CD?

Guía práctica sobre el conducto de integración continua/entrega continua (CI/CD).

Dé el siguiente paso

¿Está listo para DevOps? Entregar software y servicios a la velocidad que exige el mercado requiere que los equipos iteren y experimenten con agilidad y desplieguen nuevas versiones con frecuencia, de acuerdo con los comentarios y los datos recibidos. Los equipos de desarrollo de cloud más competentes adoptan una cultura y prácticas de DevSecOps modernas, así como arquitecturas nativas en cloud, y elaboran cadenas de herramientas a partir de las mejores herramientas para disparar su productividad.

Encuentre su solución DevOps