Come abbiamo detto, tutto il lavoro viene svolto da Nant, in questo caso si è utilizzato semplicemente lo stesso script degli esempi precedenti, con alcune modifiche minori.
<if test="${not property::exists('CCNetArtifactDirectory')}"> <property name="CCNetArtifactDirectory" value="${path.root}"/> </if> <property name="path.buildroot" value="${CCNetArtifactDirectory}/Builds"/>
CC.net infatti comunica alcune proprietà allo script nant, in particolare la CCNetArtifactDirectory
contiene la directory degli artefatti impostata nel progetto. Grazie a questa piccola modifica è quindi possibile utilizzare come cartella di output per i compilati la cartella specificata dal progetto di integrazione cc.net.
Grazie allo schema di numerazione degli assembly, visto nelle lezioni precedenti, il numero di build sequenziale, generato dal cc.net, viene utilizzato come build number negli assembly.
Come si può notare in figura, l'assembly risultante dalla compilazione ha come numero 1.1.6.4
, i primi due sono assegnati dai programmatori, mentre il numero 6
indica che questa è la sesta integrazione di cc.net ed il 4
indica il numero di revisione di cc.net.
In questo modo si può direttamente andare a controllare nel cc.net il risultato dell'integrazione numero 6, per verificare eventuali warning di compilazione ed in generale ricostruire la build.
Considerazioni
Grazie all'integrazione continua è possibile tenere costantemente sotto controllo alcune metriche di un progetto. Grazie alla flessibilità di nant è possibile partire da una semplice compilazione, per eseguire integrazioni sempre più complesse, nelle quali vengono eseguiti test nunit e tool di analisi di codice come: fxCop o Simian. Grazie alla Web Dashboard e alla cctray si può tenere sotto controllo in tempo reale lo stato dell'integrazione, in modo da reagire in maniera immediata ad eventuali problemi dovuti ad un check-in non corretto.