La build giornaliera (daily build) è uno degli "strumenti" forniti da MSF per migliorare il processo di sviluppo. Significa avere sempre la possibilità di produrre i deliverables del progetto nello stato finale (eseguibili, documenti, programmi di setup) mano a mano che vengono pronti.
Rappresenta il battito cardiaco del progetto, se la build giornaliera è "sana" si conosce lo stato del progetto, si possono verificarne le funzionalità.
Soprattutto quando le varie parti del progetto vengono sviluppate e testate in team, o magari da più team indipendenti, si corre il rischio di creare problemi di integrazione tra i vari sottosistemi. Lo scopo principale della daily build è quello di accorgersi subito dei problemi di integrazione e di bloccare lo sviluppo di nuove funzionalità fino a quando questi problemi non sono stati risolti.
E' inutile continuare a sviluppare se quelle vecchie non compilano o non si integrano!
Per implementare con successo la daily build bisogna dotarsi di un sistema di build automatizzato (batch files, NAnt, Visual Studio.NET, etc...) e di un sistema per la gestione del codice sorgente (Source Safe, PVCS, Rational ClearCase, PerForce, Vault, CVS, etc...).
A questo punto giornalmente (o molto più spesso di notte ) su una macchina dedicata vengono scaricati in automatico gli aggiornamenti ai codici sorgenti e viene lanciata la build. Il risultato della build viene poi notificato ai vari membri del team (ad esempio in caso di successo vengono notificati i Tester, che possono provare la nuova versione, in caso di fallimento vengono notificati il Release Manager e i Developer, per verificare cosa non è andato).
Un sistema di continuous integration si spinge oltre. Il software monitorizza costantemente il sistema di gestione del codice e in caso di check-in da parte degli sviluppatori, lancia automaticamente il processo di buildm che può quindi avvenire diverse volte al giorno.
Tool che permettono di implementare la Daily Build e il continuous integration sono:
Il tutto naturalmente in attesa di Visual Studio Team System che supporterà nativamente l'automazione delle build, la produzione di report, etc...