Integración continua

menu icon

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 arreglar, 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.

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

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 lanzar 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 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 (enlace externo a IBM) también es iterativo y se adapta a los cambios para poder escalar y desarrollar las soluciones a lo largo del 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 crear, integrar y probar automáticamente código tan pronto como lo confirmen en el repositorio de origen, lo que facilita a los desarrolladores detectar los errores a tiempo e implementar el 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 líneas de trabajo, 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 muchas ventajas, incluyendo 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

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.

Sea como sea, 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

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 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. 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 interconexión de integración continua automatizada es esencial para agilizar el desarrollo, las pruebas y la implementación de sus aplicaciones mediante la habilitación de controles, puntos de comprobación 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 origen para realizar el 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: esto implica compilar, enlazar y realizar otros procesos que producen los artefactos de compilación. Las autopruebas también deben automatizarse.
  • Utilizar confirmaciones diarias de la secuencia principal: forzar a los desarrolladores a confirmar sus cambios en la secuencia 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.
  • Probar en un clon del entorno de producción: haga que el entorno de prueba sea lo más parecido posible a su entorno de producción final.
  • Automatizar 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 la aplicación le 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 empresa.

Trabajando con IBM, tendrá acceso a capacidades de automatización basadas en IA, incluyendo flujos de trabajo predefinidos, para acelerar la innovación haciendo que cada proceso sea más inteligente.

Dé el siguiente paso:

— Inicie la gestión de las compilaciones de software, incluyendo el escalado y la configuración, con 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 creando una cuenta de IBM Cloud.