Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 659, comments - 871, trackbacks - 80

My Links

News

Gian Maria Ricci Mvp Logo CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

Cruise Control .NET - La prima build

Nella speranza che qualcuno sia interessato alle mie esperienze in CC.NET oggi posto subito questa seconda parte. Nella prima parte si è visto come istallare e configurare il CC.NET affinchè punti ad un repository subversion e faccia sempre il getlatest ad ogni nuova modifica. Oggi viene il momento di capire come fare un build.

LA mia esperienza personale è questa, dopo avere passato un 20 min in rete a documentarmi ho deciso di utilizzare Nant. Si potrebbe anche utilizzare MSBuild, ma purtroppo non esiste in visual studio 2003, le cui solution possono invece essere buildate direttamente da Nant, ed inoltre si può comunque lanciare MSBuild direttamente da Nant.

Passo1: la prima cosa da fare è capire come fare il build di una solution Visual Studio 2005 con MSBuild, la riga di comando è questa.

msbuild F:\Dati\Tutorials\Tutorials\CCNET\projects\CCNetTest\WorkingFolder\TestProject1\TestProject1.sln /T:rebuild /p:Configuration=Debug

Come si può vedere basta specificare la solution, il parametro T con cui si chiede un rebuild ed infine la configurazione che in questo caso è quella di debug.

Passo2: Ora che sappiamo come utilizzare msbuild per effettuare una build bisogna capire come lanciarlo da uno script Nant. Premetto che non ho mai utilizzato Nant e per questo la soluzione che posto è quella che mi è venuta in mente per prima . Il primo passo è scaricare il Nant e mettere il tutto direttamente nella cartella di subversion dove sono i sorgenti. Questa è infatti una best practice, tenere gli strumenti di build assieme ai sorgenti. A questo punto bisogna creare un file di build per il nant, lo ho creato nella stessa cartella della solution è lo ho chiamato TestProject.build.

<?xml version="1.0"?>
<project 
name="TestProject1" default="MSBuild">
    <property 
name="projectdir" value="F:\Dati\Tutorials\Tutorials\CCNET\projects\CCNetTest\WorkingFolder\TestProject1"/>
    <property 
name="MSBuildDir" value="E:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"/>
    
    <
target name="MSBuild">
        <exec 
program="${MSBuildDir}\msbuild.exe" 
              
commandline=" ${projectdir}\TestProject1.sln /T:rebuild /p:Configuration=Debug" 
              
basedir="."/>
    <
/target>
    
<
/project>

Attendo i commenti di chi conosce veramente il Nant. Una breve spiegazione la posso dare anche subito, un file build è un file XML con un funzionamento simile a quello dei makefile con cui si compilavano i programmi C/C++. Iniziamo a definire un nodo progetto, in cui specifichiamo il task di default. Internamente con il tag property si mettono delle variabili, quel tanto che basta per rendere lo script più comprensibile. A questo punto il tag target permette di specificare le attività da fare, inizialmente ne ho messa una chiamata MSBuild, il cui unico task è lanciare con il tag exec la compilazione tramite MSBuild. A questo punto bisogna testare lo script con il Nant

NAnt.exe -buildfile:F:\Dati\Tutorials\Tutorials\CCNET\projects\CCNetTest\WorkingFolder\TestProject1\TestProject1.build

Una volta che si è verificato che tutto è ok si può andare a modificare il file di configurazione principale di CC.NET aggiungendo un nuovo task.

<cruisecontrol>
    <project 
name="CCNetTest">
        
...Questa parte è come nell'esempio precedente.
        
   
<tasks>
      <nant>
        <executable>
F:\Dati\Tutorials\Tutorials\CCNET\projects\CCNetTest\WorkingFolder\BuildTools\nant-0.85\bin\nant.exe</executable>
        <buildFile>
F:\Dati\Tutorials\Tutorials\CCNET\projects\CCNetTest\WorkingFolder\TestProject1\TestProject1.build</buildFile>
        <targetList>
          <
target>MSBuild</target>
        <
/targetList>
      <
/nant>
    <
/tasks>
    <
/project>
<
/cruisecontrol>

Come potete vedere si è aggiunto un nodo tasks, in cui specifichiamo un task di tipo nant, di seguito specifichiamo dove abbiamo messo gli eseguibili, che come potete vedere si trovano nel subversion assieme ai sorgenti, si specifica quale è il file di build ed infine si mette la lista dei target, nel nostro caso solamente MSBuild.

A questo punto potete provare a modificare un file sorgente, fare il check in e vedrete al prossimo controllo il vostro progetto automaticamente compilato. Con questo primo step avete il vostro primo sistema di Continuos Integration, anche se la vera potenza di CC.NET deve ancora essere utilizzata.

Alk.

powered by IMHO 1.3

Print | posted on mercoledì 20 dicembre 2006 11:42 | Filed Under [ CruiseControl.NET ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET