Integración continua

menu icon

Integración continua

En esta guía, obtendrá más información sobre la integración continua, una práctica de DevOps y desarrollo de software 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 código nuevo que han escrito con más 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.

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

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). Por otra parte, la entrega continua, otra práctica de DevOps, se centra en entregar cualquier cambio validado de 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. El despliegue continuo optimiza el proceso todavía más y utiliza pruebas automáticas para validar los cambios en la base de código, de modo que las actualizaciones son más inmediatas.

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

Ventajas

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

  • Progreso continuo y demostrado para mejorar el feedback
  • 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 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

CI, Agile y DevOps

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 (PDF, 153 KB) 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. Ampliar las pruebas rápidas a las pruebas de tiempo de ejecución en un entorno de pruebas automatizado lleva de forma natural a 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 priorización del valor de las características a medida que se integra de forma continua.

DevOps

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.

Herramientas de integración continua de código abierto

A continuación, se indican 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 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.
  • IBM UrbanCode Build
  • 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
  • No tiene coste, 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.

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í 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.

Para ello, 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.

Servidores

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

La importancia de las pruebas

Las pruebas continuas empiezan cuando se genera una compilación de integración continua y un paquete (también conocido como entidad instalable o entidad empaquetada). Se detienen cuando la entidad empaquetada pasa a producción. Cada paso, de principio a fin, implica una suite 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.

Las mejores prácticas

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.

Integración continua e IBM Cloud®

El enfoque de IBM consiste en definir y automatizar proyectos y configurar la seguridad mediante plantillas. Cuando se realiza un cambio en una biblioteca, las aplicaciones dependientes se vuelven a compilar y se conectan, se enlazan o se vinculan. Comprender las dependencias de la aplicación le ayudará a modernizar las aplicaciones.

A medida que las organizaciones aceleran esta transformación digital, la necesidad de automatización se extiende a distintos negocios y operaciones de TI. Un cambio hacia una mayor automatización debe empezar por pequeños proyectos de éxito medible, que después puede escalar y optimizar para otros procesos y en otras partes de su organización.

Al colaborar con IBM, tendrá acceso a prestaciones de automatización basadas en IA, que incluyen flujos de trabajo predefinidos, para acelerar la innovación haciendo que todos los procesos sean más inteligentes.

Dé el siguiente paso:

— Empiece a gestionar las compilaciones de software, incluido el escalado y la configuración, con la ayuda de IBM® UrbanCode® Build.

— Lea los cinco factores imprescindibles para una automatización eficaz (enlace externo a IBM) en este informe de HFS Research.

Empiece con una cuenta de IBM Cloud hoy mismo.