I would like to view this page in
La integración continua, o CI, es la práctica de compilar y probar su base de código automáticamente después de cada fusión.
La integración continua (CI) is una práctica de DevOps diseñada para ayudar a los equipos de desarrollo a trabajar de forma más eficiente y a entregar software de forma más fiable. Con la CI, cada vez que se fusionan sus cambios, un servidor de CI compila y prueba su código automáticamente, y le ofrece una retroalimentación rápida sobre su trabajo. Este ciclo de retroalimentación rápida y fiable le ayuda a publicar los cambios con más frecuencia y a reducir el número de errores que llegan a producción.
Para comprender por qué es necesaria la integración continua, resulta útil pensar cómo sería el desarrollo de software sin ella. Supongamos que está trabajando con un sistema de control de versiones como Git. Usted y sus colegas tienen cada uno su propia copia del repositorio, que utilizan para desarrollar localmente antes de enviar su trabajo a un repositorio compartido.
Si está desarrollando una nueva funcionalidad, es posible que trabaje en ella durante varios días antes de compartir sus cambios. Durante ese tiempo, sus compañeros también han estado desarrollando funcionalidades en sus copias locales del repositorio. Una vez que hayan terminado, cada uno hace push de sus cambios al repositorio compartido y empieza a fusionarlos a una rama designada para que pueda probar que cada funcionalidad funciona como se espera cuando se combina con todo lo demás.
Lamentablemente, al combinar grandes cambios de varios desarrolladores, existe un alto riesgo de que no consiga compilar el código. Usted y sus compañeros dedican tiempo a identificar qué conjunto de cambios ha provocado el problema antes de deshacer esas confirmaciones para seguir adelante con el lanzamiento de otros cambios más urgentes o realizar más cambios para solucionar los problemas.
Una vez que consigue compilar su código, es posible que descubra que la combinación de cambios ha introducido varios errores. Una vez más, hay que revisar los cambios en el código de cada colaborador para encontrar el origen de los problemas, solucionarlos y volver a iniciar el proceso de compilación.
La integración continua acelera este proceso realizando los pasos de compilación y prueba de forma automática cada vez que se fusionan sus cambios a una rama designada. Una vez que haya automatizado estos pasos, es posible realizarlos con más frecuencia: en lugar de compilar y probar su base de código cada pocas semanas, puede hacerlo cada pocas horas.
Trabajar en estos pequeños incrementos significa que puede detectar y solucionar más rápidamente cualquier problema introducido por los cambios en el código. En lugar de examinar cientos o miles de líneas de cambios para encontrar el origen del problema, su búsqueda se limita a un conjunto mucho más reducido de cambios. Además, esos cambios aún están frescos en la mente, por lo que no tiene la carga añadida de cambiar de contexto.
Al confirmar que su software se sigue compilando y comportando como se espera después de cada cambio, la CI le ayuda mantener el código en un estado implementable. De este modo, la puesta en producción de los cambios resulta menos ardua, y puede comenzar a añadir funcionalidades y correcciones con más frecuencia.
Aunque la integración continua se ha diseñado para solucionar problemas a los que se enfrentan los grandes proyectos de desarrollo de software con varios colaboradores, nunca es demasiado pronto para añadir la CI a su proceso de desarrollo. Incluso si es un desarrollador independiente, trabajar en pequeños incrementos y validar sus cambios con pruebas automatizadas sobre la marcha le puede ayudar a trabajar de forma más eficiente y mejorar la calidad de su código.
Un flujo de trabajo de CI eficaz requiere una combinación de herramientas, procesos y prácticas de equipo. Veámoslas una tras otra.
La integración continua depende del almacenamiento de toda su base de código en un sistema de control de versiones o código fuente. Esto debe incluir todos los archivos de código fuente, bibliotecas, archivos de configuración y scripts. El uso del control de versiones facilita considerablemente que varios desarrolladores trabajen en paralelo y compartan sus cambios entre ellos. Los servidores de CI se integran con los sistemas de control de versiones para compilar y probar los cambios en su código.
Para que todos construyan sobre la misma base, es necesario que trabajen desde el mismo repositorio y que compartan sus cambios con frecuencia. Una buena regla general es que todo el mundo fusione sus cambios en la rama de la CI de su repositorio compartido cada día, aunque puede hacerlo más a menudo. Al mismo tiempo, mantenga actualizada su copia local con el repositorio compartido para reducir el riesgo de conflictos de fusión cada vez que haga push.
Después de fusionar los cambios de código, el siguiente paso es compilar la solución y someterla a una serie de comprobaciones, como análisis lint, pruebas de unidad y análisis estático. Compilar y probar manualmente conlleva tiempo y está sujeto a errores, lo que hace que el objetivo de integrar los cambios diariamente sea poco práctico, por lo que la automatización resulta esencial. Las herramientas de compilación y los marcos de trabajo de pruebas automatizadas están disponibles para los principales lenguajes de programación, y puede utilizar un servidor de CI para iniciar el proceso de forma automática y coordinar los distintos pasos.
Para disfrutar de las ventajas de la integración continua, todos los que contribuyen al proyecto deben responder rápidamente cuando falla una compilación o prueba automatizada. De este modo se garantiza que todo el mundo contribuye a una base sólida en lugar de intentar añadir nuevas funcionalidades a un código que no funciona. Aunque pueda parecer que está pidiendo a los miembros del equipo que interrumpan su trabajo para solucionar una compilación o prueba defectuosa, un proceso de CI automatizado puede ofrecer resultados iniciales en cuestión de minutos, lo que le permite resolver cualquier problema mientras los cambios en el código aún están frescos en su mente.
Una vez que haya automatizado sus compilaciones y pruebas, debe mantener su flujo de CI. Esto incluye añadir las pruebas de unidad a medida que escribe código nuevo y mantener la velocidad de sus ciclos de retroalimentación.
Añadir un servidor de CI que se encargue de supervisar el repositorio, desencadenar las compilaciones, ejecutar las pruebas automatizadas y cotejar los resultados ayuda a unir todas estas piezas, lo que le ahorra tiempo en la escritura de la lógica de automatización personalizada. Un servidor de CI bueno también puede proporcionar información adicional, como las métricas de cobertura de código y el historial de compilaciones.
Comprender los beneficios que puede esperar de la integración continua puede ayudar a motivar a los miembros del equipo para que prueben nuevas prácticas y convencer a sus grupos de interés para que apoyen los nuevos procesos.
Para cada persona y para el equipo de desarrollo en su conjunto, la CI ofrece lo siguiente:
La integración continua también beneficia a la empresa en general, por ejemplo:
Para obtener más información acerca de los beneficios de la integración, entrega e implementación continuas, consulte nuestra guía sobre los 12 beneficios de la CI/CD.
Aunque la integración continua ofrece beneficios tanto a los desarrolladores como la empresa en general, no siempre se recibe con los brazos abiertos.
Para muchos departamentos de desarrollo, DevOps representa un gran cambio en la forma de trabajar y desafía los procesos existentes. Se necesita una buena comunicación para coordinar los esfuerzos entre los equipos e inculcar una cultura de colaboración.
Si ya se siguen metodologías Agile, el cambio suele ser más fácil, ya que la importancia de escuchar la retroalimentación y la noción de los equipos autoorganizados ya deberían haber ganado terreno.
Si no es el caso, reconocer que la CI es un cambio importante, implicar a los empleados, empezar poco a poco y demostrar los beneficios a medida que se avanza puede ayudarle a convencer a sus compañeros de los beneficios que aporta la CI.
La integración continua también se enfrenta a retos más prácticos. Si trabaja en una aplicación grande y monolítica, los tiempos de compilación pueden ser lentos, y si los entornos de prueba son escasos, puede ser un reto paralelizar las ejecuciones de prueba.
Visualizar su flujo de trabajo de integración continua y utilizar métricas para identificar los cuellos de botella puede ayudar a cuantificar los costes y beneficios de invertir en cambios de arquitectura, infraestructura adicional y cobertura de pruebas automatizadas.
Configurar un flujo de trabajo de CI puede parecer abrumador. Hay muchas opciones que considerar y muchas cosas que puede automatizar. Afortunadamente, es un proceso que se presta bien a ser dividido en partes más pequeñas, ya que cada paso aportará algunos beneficios.
Las siguientes áreas son buenos lugares para empezar:
Puede obtener más información sobre la configuración tanto de la CI como de la CD con nuestra guía sobre las buenas prácticas de CI/CD.
Adoptar la integración continua ayuda a acelerar el proceso de desarrollo al tiempo que mejora la calidad del código. La automatización de estos pasos le permite trabajar de forma más eficiente y centrarse en añadir valor a los usuarios. Pero la integración continua es solo el principio del proceso de CI/CD. La siguiente etapa, la entrega continua, aplica los principios de DevOps a la siguiente parte del proceso de lanzamiento.
TeamCity es una plataforma de CI/CD flexible que puede personalizar según sus necesidades. Es compatible con los principales sistemas de control de versiones, como Git, Perforce, Mercurial y Subversion, y ofrece herramientas de compilación y prueba para los principales lenguajes de programación. La amplia variedad de desencadenantes de la CI significa que puede iniciar el proceso de compilar y probar después de cada confirmación en una rama designada, ejecutar un subgrupo de comprobaciones en ramas de funcionalidades, programar compilaciones nocturnas y dar a los miembros del equipo la opción de ejecutar comprobaciones de CI de forma local.
Para asegurarse de que obtenga la información lo más rápido posible, TeamCity puede paralelizar las pruebas y otras tareas de compilación. Las integraciones con Slack y los IDE proporcionan información dondequiera que esté trabajando, mientras que los informes detallados de las pruebas le ayudan a identificar rápidamente la causa del fallo. TeamCity también ofrece una gama de métricas para ayudarle a optimizar su proceso de CI y evaluar la cobertura de pruebas de unidad.
Si decide ampliar su proceso de CI para incluir la entrega o implementación continuas, TeamCity puede ofrecer todo lo que necesita para gestionar entornos y automatizar las implementaciones.
La entrega continua o CD (Continuous Delivery) es la práctica de automatizar los pasos manuales que se requieren para compilar y lanzar software.
La implementación continua lleva a su extremo lógico la práctica de DevOps de automatizar los pasos de compilación, pruebas e implementación.
Aprenda a crear una cadena de compilación en TeamCity configurando las dependencias de instantáneas para las configuraciones de compilación.