Daily build e continuous integration
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:
- Microsoft Build It – E’ la soluzione gratuita completa di codice sorgente in VB.NET e C# di Microsoft. Supporta Visual Studio.NET e SourceSafe. Gestisce in maniera automatica anche il versionamento del codice sorgente, aggiornando il numero di versione dei vari componenti al termine di ogni build terminata con successo.http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=B32497B0-77F7-4831-9C55-58BF3962163E
- CruiseControl - Tool multipiattaforma disponibile sia per Java sia per.NET, si integra con i più diffusi software di controllo e con i vari sistemi di build. http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET
- Draco.NET – Tool per.NET, supporta NANT, CVS, Visual Studio.NET e SourceSafe http://draconet.sourceforge.net/
- Hippo.NET – Combina alcune delle feature di Draco.NET con quelle del Microsoft BuildIt.http://hipponet.sourceforge.net/
Il tutto naturalmente in attesa di Visual Studio Team System che supporterà nativamente l'automazione delle build, la produzione di report, etc... 😊