I’ve read quite a bit about Continuous Integration and the .Net implementation CruiseControl.Net. It always seemed like a really good idea but I’ve never gotten around to trying it out, until now…
By the way setting up the server was a lot easier than I thought it would be! Here’s what I did:
CruiseControl.Net Setup
Download and run CruiseControl.Net setup http://sourceforge.net/project/showfiles.php?group_id=71179&package_id=83198
I’ve used version 1.0.1:
CruiseControl.NET-1.0.1-Setup.exe
NOTE: After setup if your server has .Net 1.1 and 2.0 as mine did you may need to change the ccnet website to use .Net 2.0. This can be done through the IIS control panel, get the properties of the ccnet site and change via the ASP.NET tab.
Subversion Client
Your server will need the subversion console client on the server to allow CruiseControl to checkout your source.
.Net 2 SDK
To allow us to build .Net 2 projects without the need for Visual Studio we need to download and install .Net 2 SDK onto the server
Setup MSBuild
To use MSBuild with CC.Net we need the logger dll -ThoughtWorks.CruiseControl.MsBuild.dll from:
http://ccnetlive.thoughtworks.com/MSBuildXmlLogger%2DBuilds/
Download and copy to: C:\Program Files\CruiseControl.NET\webdashboard\bin\
Directory structure
Setup your directory structure:
C:\CI\Myproject\ C:\CI\Myproject\build C:\CI\Myproject\logs
Using your subversion client checkout source to C:\CI\MyProject\build
ccnet.config
Add the project config to ccnet.confg:
<cruisecontrol>
<project name="MyProject">
<!-- after a change is detected, wait 10 mins and then kick off the build-->
<schedule type="schedule" sleepSeconds="600" />
<!--set the sourcecontrol type to subversion and point to the subversion exe-->
<sourcecontrol type="svn">
<executable>C:\Program Files\Subversion\bin\svn.exe</executable>
<workingDirectory>C:\CI\MyProject\build</workingDirectory>
<trunkUrl>svn://svnserver/MyProject/trunk</trunkUrl>
<autoGetSource>true</autoGetSource>
<username>myuser</username>
<password>mypassword</password>
</sourcecontrol>
<tasks>
<!-- Configure MSBuild to compile the updated files -->c:\
<msbuild>
<executable>C:\windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
<workingDirectory>C:\CI\MyProject\build\src\</workingDirectory>
<projectFile>MyProject.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug</buildArgs>
<targets></targets>
<timeout>15</timeout>
<logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,C:\Program Files\CruiseControl.NET\webdashboard\bin\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
</msbuild>
</tasks>
<!--Publishers will be done after the build has completed-->
<publishers>
<xmllogger>
<logDir>C:\CI\MyProject\Logs</logDir>
</xmllogger>
</publishers>
<modificationDelaySeconds>10</modificationDelaySeconds>
</project>
</cruisecontrol>
CC Tray
You will also want to install the CC Tray monitoring software on your pc:
It will allow you to keep an eye on the server from the comfort of your own pc.
That’s it we’re down!