Integración continua

La integración continua (continuous integration en inglés) es una práctica de ingeniería de software que consiste en hacer integraciones automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes. Entendemos por integración la compilación y ejecución de pruebas de todo un proyecto.

El proceso suele ser: cada cierto tiempo (horas), descargarse las fuentes desde el control de versiones (por ejemplo CVS, Git, Subversion, Mercurial o Microsoft Visual SourceSafe) compilarlo, ejecutar pruebas y generar informes.

Para esto suelen utilizarse aplicaciones como Travis CI, Solano CI, Bamboo, Pipeline, Apache Continuum, Hudson, Jenkins, GoCD, CruiseControl o Anthill (para proyectos Java) o CruiseControl.Net, Team Foundation Build para .Net, que se encargan de controlar las ejecuciones, apoyadas en otras herramientas como Ant o Maven (también para proyectos Java), o Nant o MSBUILD (para .Net) que se encargan de realizar las compilaciones, ejecutar las pruebas y realizar los informes.

A menudo la integración continua está asociada con las metodologías de programación extrema y desarrollo ágil.

Historia

El trabajo más temprano conocido con integración continua fue el entorno Infuse (Infuse environment) desarrollado por G.E. Kaiser, D.E. Perry y W.M. Schell. [1]

En 1994, Grady Booch uso la frase integración continua en Análisis y diseño orientado a objetos con aplicaciones (2.ª edición) para explicar como, cuando se desarrolla utilizando micro procesos, "liberaciones internas representan una forma continua de integración del sistema, y existe para forzar a dar cierre a los micro procesos".

En 1997, Kent Beck y Ron Jeffries definieron el concepto de Extreme Programming (XP) mientras trabajaban en el Chrysler Comprehensive Compensation System project, incluyendo integración continua.[2]​ Beck publicó sobre integración continua en 1998, haciendo énfasis en la importancia de la comunicación cara a cara sobre la asistida por tecnología.[3]​ En 1999, Beck elaboró más en su primer libro completo sobre Extreme Programming.[4]

CruiseControl, es una de las primeras herramientas de código libre,[5]​ y fue lanzada en 2001.

Ventajas

  • Los desarrolladores pueden detectar y solucionar problemas de integración de forma continua, evitando el caos de última hora cuando se acercan las fechas de entrega.
  • Disponibilidad constante de una versión para pruebas, demos o lanzamientos anticipados.
  • Ejecución inmediata de las pruebas unitarias.
  • Monitorización continua de las métricas de calidad del proyecto.

Véase también

Referencias

  1. Kaiser, G.E. (22 de septiembre de 1989). «Infuse: fusing integration test management with change management». IEEE. doi:10.1109/CMPSAC.1989.65147. Consultado el 5 de noviembre de 2018. 
  2. «Continuous Integration». 
  3. «Extreme Programming: A Humanistic Discipline of Software Development». 
  4. Beck, Kent (1999). Extreme Programming Explained. ISBN 978-0-201-61641-5. 
  5. «A Brief History of DevOps, Part III: Automated Testing and Continuous Integration». CircleCI. 1 de febrero de 2018. Consultado el 19 de mayo de 2018. 

Enlaces externos

  • Artículo de Martin Fowler
  • Pragmatic Automation: Libro Archivado el 4 de julio de 2008 en Wayback Machine. o Web
  • Continuous Integration Tools Directory
  • Enlace al artículo Aprende a implantar integración continua desde 0
  • La integración continua desde el punto de vista del desarrollador
  • Integración continua rápida y sencilla con GitLab CI
Control de autoridades
  • Proyectos Wikimedia
  • Wd Datos: Q965769
  • Commonscat Multimedia: Continuous integration / Q965769

  • Wd Datos: Q965769
  • Commonscat Multimedia: Continuous integration / Q965769