Continuous Integration come mi piace
4 dicembre 2008
Nessun commento
In questi giorni mi sono deciso di riorganizzare i server che utilizziamo per lo sviluppo del nostro prodotto. In particolare ho sistemato il server di continuous integration basato su CruiseControl.net (che consiglio caldamente). Dopo aver aggiornato all’ultima release tutto il software necessario ho riorganizzato e ottimizzato i progetti in CruiseControl.net in questo modo.
Progetto “Continuous“.
Questo è il progetto principale, quello che viene eseguito in “continuazione” ogni volta che qualcuno apporta una modifica alla solution del progetto. Snello e molto veloce nell’eseguire le sue attività è l’ideale per ricevere in tempi brevi un risultato sulla situazione. I task eseguiti sono:
- Compilazione solution in modalità debug
- Esecuzione degli unit test in modalità debug
Progetto “Metrics“.
Concepito per eseguire metriche di qualsiasi tipo sul codice sorgente, viene lanciato una volta ogni due ore, poiché il processo è abbastanza lungo ed oneroso in termini di risore, e schedulato per funzionare dalle 8 alle 20 dal lunedì al venerdì. I task eseguiti sono:
- Compilazione solution in modalità release
- Esecuzione unit test in modalità release
- Coverage degli stessi
- Esecuzione di Simian
- Esecuzione di SourceMonitor
- Esecuzione di FxCop
Progetto “Deploy“.
Come ultimo questo progetto ideale per svolgere tutte quelle attività di pre e post deploy tipiche di un rilascio. Tra queste è compresa la generazione della documentazione del codice sorgente. I task eseguiti sono:
- Compilazione solution in modalità release
- Generazione dell’installazione
- Generazione documentazione tecnica
Credo che questa suddivisione riesca bene ad ottimizzare le risorse del server e nel contempo a soddisfare le nostre esigenze di progetto. Non nascondo la difficoltà incontrate nel configurare CruiseControl e Nant (maledetti file di configurazione in xml) ma alla fine ho vinto io!
