msgbartop
Around Software Development and Innovation
msgbarbottom

27 Feb 11 Setup di CruiseControl.NET sottoTFS 2005 e un server a 64bit

Ho installato da poco CC.NET sotto TFS per metter su una soluzione di continuous integration. Vi riporto i passi per replicare la cosa nel caso vi servisse…

Strumenti:CruiseControl.NET (Versione 1.4.2.14) CC.NET Plugin per CC.NET per TFS (http://www.codeplex.com/TFSCCNetPlugin)Client TFS Explorer TFS 2005 CC Tray (Client Windows for CC.NET)

Scaricare ed installare CC.NET (tenete presente la versione). Successivamente scaricate il plug-in per l'integrazione di TFS con CC.NET da Codeplex. La sola operazione richiesta è la copia della DLL nella cartella di installazione di CC.NET (server).In particolare questo plugin si occupa volta per volta di fare la get latest del nostro progetto da TFS.Andiamo poi a modificare la configurazione di CC.NET. Riporto un esempio:<cruisecontrol xmlns:cb="urn:ccnet.config.builder"><project>   <name>Devenv project</name>     <triggers>        <intervalTrigger seconds="60"/>    </triggers>    <modificationDelaySeconds>60</modificationDelaySeconds>    <sourcecontrol type="vsts" autoGetSource="true" applyLabel="true">  <server>http://tfsserver:8080</server>  <project>$/TestProject</project>     <username>user</username>         <password>password</password>     <domain>mydomain</domain></sourcecontrol>  </project></cruisecontrol>Nella sezione <sourcecontrol> indichiamo tutte le informazioni per la connessione a TFS. Ho avuto bisogno anche di Reflector per verificare e comprendere tutte le funzionalità offerte da questo plugin.Nel mio caso dovevo installare il tutto su un server a 64bit server, ma avevamo bisogno di far girare CC.NET  in un contesto a 32 bit. A tale scopo basta digitare il seguente comando dal prompt dei comandi di VS:corflags.exe 32bit+ ccnet.exe Dopo scarichiamo il TFS 2005 Cliente Explorer, dato che utilizzeremo alcune delle DLL per alcune operazioni cumuni in TFS. Dopo aver fatto la decompressione del file TFS 2005 client .img (io ho usato un programma freeware: ExtractNow).Nel mio caso per comdità ho installato alcune DLL nella GAC del server (gacutil /i  file.dll under VS command prompt):Microsoft.TeamFoundation.Client.dllMicrosoft.TeamFoundation.Common.dllMicrosoft.TeamFoundation.Common.Library.dllMicrosoft.TeamFoundation.dllMicrosoft.TeamFoundation.VersionControl.Client.dllMicrosoft.TeamFoundation.VersionControl.Common.dllMicrosoft.TeamFoundation.VersionControl.Common.Integration.dllMicrosoft.TeamFoundation.WorkItemTracking.Client.Cache.dllMicrosoft.TeamFoundation.WorkItemTracking.Client.DataStore.dllMicrosoft.TeamFoundation.WorkItemTracking.Client.dllMicrosoft.TeamFoundation.WorkItemTracking.Client.Provision.dllMicrosoft.TeamFoundation.WorkItemTracking.Client.QueryLanguage.dllMicrosoft.TeamFoundation.WorkItemTracking.Client.RuleEngine.dllMicrosoft.TeamFoundation.WorkItemTracking.Proxy.dll

Ora possiamo usare il client CCTray per connetterci e monitorare CC.NET. Ora non resta che configurare CC.NET fper fargli fare la build dei nostri progetti. Useremo, ovviamente, MSBuild, il motore di building di Microsoft usato da Visual Studio(facciamo attenzione alla versione di MSBuild per .NET Framework  2.0,3.0 or 3.5).Riporto un altro estratto del .config di esempio:<project>    <name>Example1</name>    <triggers>      <intervalTrigger seconds="240"/>    </triggers>    <modificationDelaySeconds>120</modificationDelaySeconds>    <sourcecontrol type="vsts" autoGetSource="true" applyLabel="true">      <server>http://tfs:8080</server>      <project>$/CA.Example1</project>      <username>user</username>      <password>pwd</password>      <domain>mydomain</domain>      <workingDirectory>C:\WorkingDirectory\example1\</workingDirectory>

    </sourcecontrol>    <tasks>      <msbuild>        <executable>C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>        <workingDirectory>C:\WorkingDirectory\example1workingDirectory>        <projectFile>Example1.sln</projectFile>        <buildArgs> /p:Configuration=Debug</buildArgs>        <targets>Build</targets>

      </msbuild>    </tasks>    <publishers>

    </publishers>  </project>

Nel mio caso la build usa le informazioni di debug e nessun task di prebuild o post build.

Buon setup!Antonio