Una compilación diaria o nocturna es la práctica de completar una compilación de software de la última versión de un programa, diariamente. Esto es para que primero se pueda compilar para garantizar que estén presentes todas las dependencias requeridas y, posiblemente, probar para demostrar que no se han introducido errores . La compilación diaria también suele estar disponible públicamente, lo que permite el acceso a las últimas características para recibir comentarios. En este contexto, una compilación es el resultado de compilar y vincular todos los archivos que componen un programa . El uso de procedimientos tan disciplinados como las compilaciones diarias es particularmente necesario en grandes organizaciones donde muchos programadores trabajan en una sola pieza de software. Realizar compilaciones diarias ayuda a garantizar que los desarrolladores puedan trabajar sabiendo con una certeza razonable de que cualquier error nuevo que aparezca es el resultado de su propio trabajo realizado durante el último día.
Las compilaciones diarias suelen incluir un conjunto de pruebas, a veces llamadas " pruebas de humo ". Estas pruebas se incluyen para ayudar a determinar qué puede haberse dañado debido a los cambios incluidos en la última compilación. La parte fundamental de este proceso es incluir pruebas nuevas y revisadas a medida que avanza el proyecto.
Aunque las compilaciones diarias se consideraban una buena práctica de desarrollo de software en la década de 1990, ahora han sido reemplazadas. La integración continua ahora se ejecuta de forma casi continua, con un tiempo de ciclo típico de alrededor de 20 a 30 minutos desde el último cambio en el código fuente. Los servidores de integración continua monitorean continuamente el sistema de control del código fuente . Cuando estos servidores detectan nuevos cambios, utilizan una herramienta de compilación para reconstruir el software. Una buena práctica hoy en día también es utilizar la integración continua como parte de las pruebas continuas , de modo que las pruebas unitarias se vuelvan a ejecutar para cada compilación y se realicen pruebas funcionales más extensas (que tardan más en realizarse que la compilación) con la frecuencia que permita su duración.