Integración continua
Fondo negro y azul
Integración continua

En esta guía, obtenga más información sobre la integración continua, una práctica de desarrollo de software y DevOps en la que cada desarrollador integra su nuevo código en la rama principal del código al menos una vez al día.


¿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 más 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 los problemas de integración antes, cuando son más fáciles de resolver, lo que también ayuda a evitar problemas en la fusión final para el lanzamiento. En general, la integración continua ayuda a agilizar el proceso de compilación, lo que da como resultado un software de mayor calidad y cronogramas de entrega más predecibles.


Integración continua (CI) vs. entrega continua (CD) vs. implementación continua

Con la integración continua, cada desarrollador integra su trabajo con la rama principal del código fuente al menos una vez al día (o, preferiblemente, varias veces al día). La entrega continua, otra práctica de DevOps, en su lugar se centra en ofrecer cualquier cambio validado a la base de código, actualizaciones, correcciones de errores, incluso nuevas características, a los usuarios de la forma más rápida y segura posible. La implementación continua agiliza más el proceso, utilizando pruebas automatizadas para validar los cambios en la base de código, lo que lleva a actualizaciones más inmediatas.

La entrega continua retoma el proceso donde finaliza la integración continua, automatizando la entrega de aplicaciones a entornos de infraestructura seleccionados. Garantiza la automatización de los cambios de código en diferentes entornos, como el desarrollo, las pruebas y la producción.


Beneficios y Agile y DevOps
Beneficios

A continuación, se indican algunas de las ventajas más notables que proporciona la integración continua:

  • Progreso continuo y demostrado para mejorar la retroalimentación
  • 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
  • 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 del desarrollo de software
  • Menos cambios paralelos para la fusión y prueba
  • Número reducido de errores durante las pruebas del sistema
  • Sistemas actualizados constantemente en los que realizar las pruebas
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 lanzar software. Debido a que la  integración continua (el enlace es externo a IBM) y el desarrollo de Agile comparten muchas de las mismas características (p. ej., automatización de pruebas), puede ser útil hablar sobre integración continua y Agile al mismo tiempo. Agile organiza el desarrollo en grupos más pequeños de trabajo o sprints. Cuando se aplica en DevOps, estas prácticas combinadas ayudan a garantizar la calidad del software y la flexibilidad del proyecto.

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

Agile (el enlace es externo a IBM)  también es iterativo y se adapta al cambio para que pueda escalar y producir soluciones con el tiempo. En el contexto de la integración continua, el desarrollo de software ágil se basa en la entrega de iteraciones de software basadas en cómo se prioriza el valor de las características a medida que se integra de forma continua.

DevOps

En la infraestructura de  DevOps,  la integración continua se encuentra al principio del proceso de desarrollo de software, donde se verifica 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 de código. Esto le ayuda a evitar conflictos de fusión desastrosos que podrían "romper" la compilación y tomar al equipo horas o días para resolver.

La integración continua sirve como requisito previo para las etapas de prueba, implementación y lanzamiento 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.


Herramientas de integración continua de código abierto

Las siguientes son algunas de las herramientas de integración continua más populares:

  • 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íen al repositorio de origen, lo que facilita que los desarrolladores detecten errores temprano e implementen software más rápido. El plug-in 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 pipelines, que facilitan el modelado de flujos de trabajo de compilación complejos.
  • IBM UrbanCode Build
  • Travis CI: Una de las soluciones alojadas más antiguas y de mayor confianza, también está disponible en una versión local para la empresa.
  • GitLab CI: Parte integral del proyecto Rails de código abierto, GitLab CI es un servicio alojado gratuito que proporciona una gestión detallada del repositorio git con funciones como control de acceso, seguimiento de problemas, revisiones de código y más.

La realización de una integración continua con herramientas de código abierto ofrece numerosas ventajas, entre las que se incluyen las siguientes:

  • Cientos de plug-ins que pueden dar soporte al proyecto
  • Amplio soporte para lenguajes de código abierto, como Python, Java y JavaScript
  • De forma gratuita, proporciona a los estudiantes, startups y desarrolladores una poderosa herramienta que no pesa en el presupuesto
  • Personalización, lo que permite a los desarrolladores tomar la base de una herramienta de CI y crear en ella para adaptarse a las necesidades
  • La capacidad de modificar y redistribuir las herramientas

Las herramientas de integración continua de código abierto a tener en cuenta para el flujo de trabajo de desarrollo de software incluyen Jenkins, Go, Buildbot y Travis CI, sobre los cuales puede leer en la siguiente sección.


Caso de uso y servidores
Caso de uso

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í sobre qué características funcionan 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 sucederían estas combinaciones y pruebas consumiría mucho tiempo para los desarrolladores.

Para ello, tendrían que estar de acuerdo en lo siguiente:

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

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

Normalmente, en las plataformas de CI como Jenkins, se comienzan las pruebas de integración durante la incorporación. Cuando se verifica el nuevo código, el sistema de CI ejecuta un conjunto de pruebas, que pueden incluir pruebas de unidad y pruebas de regresión y, a continuación, determina si el código se ha integrado satisfactoriamente.

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

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

Servidores

Un servidor de integración continua es una herramienta de software que centraliza todas sus operaciones de integración continua y proporciona una plataforma fiable y estable para que pueda crear sus proyectos. Puede configurar y ajustar servidores de CI para crear varios proyectos para distintas 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 interconexiones de entrega continua. Un servidor de integración continua ofrece la posibilidad de hacer lo siguiente:

  • Ejecutar compilaciones, pruebas y lanzamientos automáticos en un solo lugar
  • Implementar 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 ha definido para un compromiso satisfactorio
  • Enviar comentarios a los miembros del proyecto relevantes con detalles de la compilación

La importancia de las pruebas y las mejores 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 entidad empaquetada). Se detiene cuando la entidad empaquetada entra en producción. Cada paso, de principio a fin, implica una suite de pruebas.

Como mínimo, cuando sólo tiene una etapa de prueba, el 30 % 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. Solía ser necesario completar las pruebas manualmente. Ahora puede utilizar pruebas automatizadas: la clave para una integración continua satisfactoria.

Como parte de la automatización de pruebas para la integración continua, el desarrollo basado en pruebas crea de forma iterativa código y prueba un caso de uso a la vez 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 nuevo código ha fallado en una o más de las pruebas desarrolladas en todas las áreas funcionales de la aplicación. Una práctica recomendada requiere que los desarrolladores ejecuten todos o un subconjunto de pruebas en sus entornos locales, lo que garantiza que los desarrolladores sólo confirmen el código fuente al control de versiones después de que los nuevos cambios de código pasen sus pruebas. La experiencia muestra que las pruebas de regresión eficaces pueden ayudar a evitar sorpresas desagradables más adelante.

Interconexión de integración continua
 

Una interconexión de integración continua automatiza las etapas de la interconexión de un proyecto, tales como las compilaciones, pruebas e implementaciones de una manera repetible, con una intervención humana mínima. Una pipeline de integración continua automatizada es esencial para agilizar el desarrollo, las pruebas y la implementación de sus aplicaciones habilitando controles, puntos de control y velocidad.

Las mejores prácticas

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 la codificación, prueba, implementación y soporte de software. Las siguientes son 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 fuente para rastrear y controlar todos los archivos para crear un producto. Esta base de código consolidada facilita la distribución y la visibilidad.
  • Automatice la compilación: esto implica compilar, enlazar y realizar otros procesos que producen los artefactos de compilación. Las autopruebas también deben automatizarse.
  • Utilice confirmaciones diarias de la línea principal:  Obligue a los desarrolladores a enviar sus cambios al flujo de desarrollo principal al menos una vez al día. Cada desarrollador debe verificar que su copia funcional sea consistente con la secuencia de desarrollo principal.
  • Pruebe en un clon del entorno de producción:  Haga que el entorno de prueba sea lo más similar 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.

Integración continua e IBM Cloud®

El enfoque de IBM es definir y automatizar proyectos y configurar la seguridad utilizando plantillas. Cuando se realiza un cambio en una biblioteca, las aplicaciones dependientes se recompilan y se conectan, se enlazan o se vinculan. Comprender las dependencias de las aplicaciones lo ayudará a modernizar sus aplicaciones.

A medida que las organizaciones aceleran dicha transformación digital, la necesidad de automatización se amplía a través de las operaciones empresariales y de TI. El cambio hacia una mayor automatización debe comenzar con pequeños proyectos exitosos, que luego puede escalar y optimizar para otros procesos y en otras partes de su organización.

Al trabajar con IBM, tendrá acceso a  funcionalidades de automatización basadas en IA, incluyendo flujos de trabajo preintegrados, para ayudar a acelerar la innovación haciendo que cada proceso sea más inteligente. 

Dé el siguiente paso:

- Comience a administrar sus compilaciones de software, incluidos el escalado y la configuración, con la ayuda de Compilación de IBM® UrbanCode®.

- Lea acerca de los cinco puntos "imprescindibles" para el éxito de la automatización (enlace externo a ibm.com) en este informe de HFS Research.

Empiece con una cuenta de IBM Cloud hoy mismo.


Soluciones relacionadas

Automatización basada en IA

Desde sus flujos de trabajo de negocios hasta sus operaciones de TI, lo tenemos cubierto con automatización basada en IA. Descubra cómo las empresas líderes se están transformando.


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 compilaciones a escala empresarial que utiliza un sistema basado en plantillas.