Dopo l'intervento di Simone nel
nostro secondo workshop mi sono deciso a spendere un po di tempo per configurare
il Cruise Control .NET.
Ho immediatamente consultato il blog di simone ed ho trovato quì un piccolo vademecum. Purtroppo questi post sono sicuramente
vecchiotti e penso che Simone visto il suo imminente trasferimento in nuova
Zelanda difficilmente avrà il tempo per rimetterci mano.
A questo punto ho iniziato a leggere la doucmentazione e passerò una
mezzoretta al giorno cercando di configurare il server e vorrei riportare nel
blog passo dopo passo le mie esperienze, sperando che siano di aiuto agli
altri.
Il primo passo è scaricare ed installare l'ultima versione di CC.NET ed
installarla, a questo punto avremo una cartella con gli eseguibili del CC.NET
più un sito configurato per accedere al server (Web Dashboard). Il primo passo
che ho fatto è stato editare il file ccnet.config
(C:\Program Files\CruiseControl.NET\server)in modo da ottenere un primo risultato, collegarmi ad un
subversion e mantenere aggiornato un repository. Per esperienza ho capito che per lavorare
correttamente con CC.NEt bisogna procedere per piccoli passi.
Il primo consiglio è che nella cartella server trovate
il file ccnet.exe che null'altro è che il server a linea di comando. Mentre
state provando ad editare il file di configurazione
ccnet.config consiglio di tenere un programma come ultraedit32
puntato sul file ccnet.log e poi procedere facendo piccole modifiche al
ccnet.config e poi lanciare il ccnet.exe
per vedere se il
file di configurazione è a posto. In questo modo si trovano
subito gli errori perchè se avete scritto qualche cosa che lui non capisce
il server non parte e nel log potete vedere cosa è successo. Il primo
file di configurazione che ho generato è il seguente.
<cruisecontrol>
<project name="CCNetTest">
<webURL>http://localhost/ccnet</webURL>
<workingDirectory>F:\Dati\Tutorials\Tutorials\CCNET\projects\CCNetTest\WorkingFolder</workingDirectory>
<artifactDirectory>F:\Dati\Tutorials\Tutorials\CCNET\projects\CCNetTest\Artifacts</artifactDirectory>
<modificationDelaySeconds>60</modificationDelaySeconds>
<category>TestProjects</category>
<triggers>
<intervalTrigger name="continuous" seconds="30"/>
</triggers>
<sourcecontrol type="svn">
<workingDirectory>F:\Dati\Tutorials\Tutorials\CCNET\projects\CCNetTest\WorkingFolder</workingDirectory>
<trunkUrl>svn://10.8.0.1/CCNETTest/trunk</trunkUrl>
<username>CCNET</username>
<password>ccnetserver18</password>
<autoGetSource>true</autoGetSource>
</sourcecontrol>
</project>
</cruisecontrol>
Inizialmente viene specificato il nome del progetto, la url web dove si
accederà all'interfaccia web (per ora non ce ne preoccupiamo) e poi le
directory, una per gli artefatti, ed una per i sorgenti. L'elemento modificationDelaySeconds indica al
CC.NET di non effettuare un build se ci sono due modifiche entro i 60 secondi,
un parametro che per ora non ci interessa molto. Successivamente troviamo la
sezione triggers che contiene un intervalTrigger il cui scopo è impostare
l'intervallo in secondi utilizzato dal CC.NET per controllare se è stato fatto
check in di qualche file.
Successivamente viene la sezione sourcecontrol in cui si specifica la working
directory dove mettere i sorgenti, la url dove troviamo il trunk del nostro
progetto, le credenziali utente ed infine un elemento importante chiamato
autoGetSource che indica al CC.NET di effettuare un update del repository in
maniera automatica.
Una nota particolare va fatta sull'uso di subversion. CC.NET non è in
grado di effettuare il checkout iniziale, per questa ragione il primo checkout
sulla cartella deve essere fatto manualmente, poi CC.NET va da solo. Ora se
viene fatto un checkin del repository controllato da CC.NET ad intervalli di 30
secondi la working folder viene automaticamente aggiornata. Ecco cosa mostra il
CC.NET quando aggiungo un file al mio repository.
2006-12-19 18:16:56,062 [CCNetTest:INFO] 1
modification detected.
2006-12-19 18:16:56,125 [CCNetTest:INFO] The most
recent modification at 19/12/2006 18.16.49 is within in the modification
delay. Waiting for 55,1 seconds until 19/12/2006 18.17.49 before checking
again.
Alk.