Inicio Topics Integración continua ¿Qué es la integración continua? 
Explore nuestras soluciones DevOps Suscríbase a actualizaciones de IA
Ilustración con collage de pictogramas de engranaje, brazo robótico, teléfono móvil
¿Qué es la integración continua?

La integración continua es un proceso de desarrollo de software en el que los desarrolladores integran el nuevo código que han escrito con mayor frecuencia a lo largo del ciclo de desarrollo, añadiéndolo a la base de código al menos una vez al día.

Las pruebas automatizadas se realizan en cada iteración de la compilación para identificar antes los problemas de integración, cuando son más fáciles de corregir. Este enfoque también ayuda a evitar problemas en la fusión final de la versión. En general, la integración continua ayuda a agilizar el proceso de creación, lo que se traduce en un software de mayor calidad y unos plazos de entrega más predecibles.

Guía sobre IA y automatización de TI

La Guía empresarial sobre la IA y la automatización de la TI ofrece un análisis detallado de la automatización de la TI con IA, que incluye por qué y cómo usarla, los problemas que bloquean sus esfuerzos y cómo empezar.

Contenido relacionado

Regístrese para obtener el informe TEI para IBM Robotic Process Automation

Integración continua y DevOps

Por definición, DevOps esboza un proceso de desarrollo de software y un cambio en una cultura organizativa. Este proceso acelera la entrega de software de mayor calidad automatizando e integrando los esfuerzos de los equipos de desarrollo y operaciones de TI. Tradicionalmente, estos dos grupos ejercían por separado o en silos.

En la práctica, los mejores procesos y culturas DevOps van más allá del desarrollo y las operaciones. Este grupo incluye ingeniería de plataformas e infraestructuras, seguridad, conformidad, gobierno, gestión de riesgos, línea de negocio, usuarios finales y clientes. El grupo incorpora las aportaciones de todas las partes interesadas en la aplicación al ciclo de vida de desarrollo del software. 

En el marco de DevOps, la integración continua se sitúa al principio del proceso de desarrollo de software. Aquí es donde se comprueba el código al menos una vez al día para evitar que las copias locales se alejen demasiado de la rama principal de la compilación del código. Este enfoque ayuda a evitar desastrosos conflictos de fusión que podrían "romper" la compilación y llevar al equipo horas o días resolverlos.

La integración continua es un requisito previo para las fases de prueba, implementación y lanzamiento de la entrega continua. Todo el equipo de desarrollo sabrá en cuestión de minutos si ha creado código defectuoso, ya que el servicio de integración continua compila y prueba automáticamente los cambios de código para detectar cualquier error.

Integración continua (CI) frente a entrega continua (CD) frente a implementación continua

La entrega y la implementación continuas siguen a la integración continua en el ciclo DevOps. 

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

En la implementación continua, los cambios en el código de una aplicación se liberan 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 superan esas pruebas, el sistema las envía directamente a los usuarios del software.

Beneficios de la integración continua

Entre los beneficios más citados de la integración continua se incluyen:

  • La detección precoz y mejorada de errores y métricas que le permiten tratar los errores con prontitud, a veces a los pocos minutos de registrarse

  • El progreso continuo y demostrado para mejorar los comentarios

  • La mejora de la 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

  • La mejor integración 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

  • La reducción del número de errores durante las pruebas del sistema

  • Sistemas constantemente actualizados con los que realizar pruebas
Integración continua y ágil

Las prácticas ágiles en el desarrollo de software mejoran la forma en que los equipos de desarrollo de software se organizan, se adaptan a los cambios en los requisitos y liberan software. La integración continua (enlace externo a ibm.com) y el desarrollo ágil comparten muchas de las mismas características, como la automatización de pruebas. Por lo tanto, puede ser útil hablar de integración continua y ágil al mismo tiempo.

La metodología ágil consiste en organizar el desarrollo en pequeños grupos de trabajo o sprints. Cuando se aplican en DevOps, estas prácticas combinadas ayudan a garantizar la calidad del software y la flexibilidad del proyecto.

La integración continua requiere integrar 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 extensión de las pruebas rápidas a las pruebas de tiempo de ejecución en un entorno de pruebas automatizado conduce de forma natural a la entrega continua.

La metodología ágil (enlace externo a IBM) también es iterativa y se adapta al cambio para poder escalar y evolucionar las soluciones con el tiempo. En el contexto de la integración continua, el desarrollo ágil de software consiste en entregar iteraciones de software basadas en cómo se prioriza el valor de las características a medida que se integran continuamente.

Herramientas de integración continua de código abierto

Entre las herramientas de integración continua de código abierto más conocidas se encuentran:

  • Jenkins: Jenkins, una herramienta de integración continua de código abierto ampliamente utilizada, permite a los desarrolladores compilar, integrar y probar automáticamente el código tan pronto como lo envían al repositorio de código fuente. Este proceso facilita a los desarrolladores la detección precoz de errores y una implementación más rápida del software. El complemento Docker está disponible en Jenkins.

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

  • Go: lo que diferencia a Go del resto es el concepto de canalización, que facilita el modelado de flujos de trabajo complejos.

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

  • GitLab CI: parte integrante del proyecto de código abierto Rails, GitLab CI es un servicio alojado gratuito. Esta herramienta proporciona una gestión detallada de repositorios Git con características como control de acceso, seguimiento de incidencias, revisión de código y mucho más.

Realizar la integración continua con herramientas de código abierto ofrece muchas ventajas, entre ellas:

  • Cientos de complementos para su proyecto

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

  • Sin coste alguno, para que los estudiantes, las nuevas empresas y los desarrolladores que trabajan por cuenta ajena dispongan de una herramienta potente y asequible

  • Personalización, que permite a los desarrolladores tomar la base de una herramienta de CI y construir sobre ella para adaptarse a las necesidades

  • La capacidad de modificar y redistribuir las herramientas

Entre las herramientas de integración continua de código abierto a tener en cuenta para su flujo de trabajo de desarrollo de software se incluyen Jenkins, Go, Buildbot y Travis CI, sobre las que puede leer en la siguiente sección.

Servidores de integración continua

Un servidor de integración continua es una herramienta de software que centraliza todas sus operaciones de integración continua y le proporciona una plataforma fiable y estable para construir sus proyectos. Puede configurar y ajustar los servidores CI para construir varios proyectos para diferentes plataformas. Un servidor de integración continua modela y visualiza fácilmente flujos de trabajo complejos (lo que permite la entrega continua) y proporciona una interfaz intuitiva para crear canalizaciones de entrega continua. Un servidor de integración continua ofrece la posibilidad de:

  • Ejecutar compilaciones, pruebas y lanzamientos automáticos en un único lugar

  • Implementar cualquier versión, en cualquier momento

  • Mantener la configuración ordenada

  • Admitir complementos para mejorar la funcionalidad

  • Monitorizar el repositorio de su proyecto

  • Extraiga los cambios y realice las tareas definidas para una confirmación correcta

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

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

Los dos desarrolladores deben comunicarse entre sí sobre qué características funcionan y cómo. Este pequeño equipo necesita actualizaciones periódicas y debe ser capaz de integrar y probar su código en conjunto. Programar el registro del código y las pruebas requiere mucho tiempo de desarrollo. Se necesita un sistema automático de integración continua.

Negociar cuándo se producirían estas combinaciones y pruebas llevaría mucho tiempo a los desarrolladores. Tendrían que ponerse de acuerdo en:

  1. Cuándo empezar a probar la integración del código
  2. Cómo comprobar 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 permiten la configuración y el ajuste.

Normalmente, las plataformas CI como Jenkins comienzan las pruebas de integración en el check-in. Cuando se registra nuevo código, el sistema CI ejecuta una serie de pruebas, que pueden incluir pruebas unitarias y de regresión, y determina si el código se ha integrado correctamente.

O, si está utilizando un lenguaje compilado, la prueba por defecto será si el código se compila correctamente. Si no, entonces el nuevo código ha roto la compilación. Para lenguajes como Python o JavaScript, debe crear su propia prueba de integración.

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

Pruebas y buenas prácticas

La importancia de las pruebas

Las pruebas continuas comienzan cuando se produce una compilación de integración continua y un paquete (también conocido como entidad instalable o empaquetada). Se detiene cuando esa entidad empaquetada pasa a producción. Cada paso de extremo a extremo implica un conjunto de pruebas.

Como mínimo, cuando solo hay una fase de pruebas, el 30 % de la integración continua consiste en pruebas. En realidad, las actividades de integración continua comprenden entre un 50 % y un 70 % de pruebas. Antes había que realizar las pruebas manualmente. Ahora puede utilizar pruebas automatizadas, la clave del éxito de la integración continua.

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 un caso de uso cada vez. Este enfoque garantiza la cobertura de las pruebas, mejora la calidad del código y sienta las bases para la entrega continua. Las pruebas automatizadas le indican si el nuevo código no ha superado una o varias de las pruebas desarrolladas en todas las áreas funcionales de la aplicación.

Una de las buenas prácticas consiste en que los desarrolladores ejecuten todas las pruebas o un subconjunto de ellas en sus entornos locales. Esta práctica garantiza que los desarrolladores sólo envíen el código fuente al control de versiones después de que los nuevos cambios en el código superen las pruebas. La experiencia demuestra que unas pruebas de regresión eficaces pueden ayudar a evitar sorpresas desagradables más adelante.

El proceso de integración continua

Una canalización de integración continua automatiza las fases de un proyecto, como las compilaciones, las pruebas y las implementaciones, de forma repetible y con una intervención humana mínima. Una canalización de integración continua automatizada es esencial para agilizar el desarrollo, las pruebas y la implantación de sus aplicaciones, ya que permite controles, puntos de comprobación y velocidad.

Buenas prácticas de integración continua

El proceso de integración continua es un componente crítico de DevOps, que le ayuda a unificar sus equipos de desarrollo y operaciones en un repositorio compartido para codificar, probar, implementar y dar soporte al software. Algunas de las buenas prácticas de integración continua que pueden ayudarle a tener éxito son:

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

  • Automatizar la compilación: esta práctica implica compilar, enlazar y otros procesos que producen los artefactos de compilación. El autodiagnóstico también debe automatizarse.

  • Utilizar confirmaciones diarias: obligue a los desarrolladores a enviar sus cambios al flujo principal de desarrollo al menos una vez al día. Cada desarrollador debe verificar que su copia de trabajo es coherente con la corriente principal de desarrollo.

  • Realizar las pruebas en un clon del entorno de producción: haga que el entorno de pruebas sea lo más parecido posible a su entorno de producción final.

  • Automatice la implementación: implemente varios entornos (desarrollo, integración, producción) para ejecutar compilaciones y pruebas.
Solución relacionada
IBM UrbanCode Build

Configure y ejecute compilaciones de software más fácilmente con la herramienta IBM UrbanCode Build, una solución de gestión de compilación a escala empresarial que utiliza un sistema basado en plantillas.

Explore IBM UrbanCode Build
Recursos ¿Qué es DevOps?

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

¿Qué es la entrega continua?

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

¿Qué son CI/CD y la canalización de CI/CD?

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

Dé el siguiente paso

¿Todo listo para DevOps? Para ofrecer software y servicios a la velocidad que exige el mercado, los equipos tienen que iterar y experimentar con rapidez, implementar nuevas versiones con frecuencia y guiarse por los comentarios y los datos. Los equipos de desarrollo en la nube con más éxito adoptan la cultura y las prácticas DevOps modernas, adoptan arquitecturas nativas de la nube y reúnen cadenas de herramientas de las mejores para dar rienda suelta a su productividad.

Explore las soluciones DevOps Pruébelo gratis