|
|
Microsoft .NET - Tips and Tricks
|
Tuesday, March 20, 2007
Configuring CruiseControl .Net to work with multiple Subversion repositories
What is this article about?
CruiseControl.NET (CCNet) is an Automated Continuous Integration server, implemented using the Microsoft .NET Framework. This article will not explain what continuous integration is and how CruiseControl .Net works and will assume that readers already have a basic knowledge of the system. In this article I’ll write about how CruiseControl .Net should be configured in order to work with Subversion when more subversion providers should be used.
Prerequisites
Next list shows the software that should be installed on machine running CruiseControl .Net server: 1. FxCop version 1.35 should be installed on machine. 2. NUnit version 2.2.8 or later should be installed on machine. 3. NCover and NCoverExplorer should be installed on machine. 4. SVN (svn-win32-1.4.3) should be installed on machine and access to Subversion from that machine must be enabled
Configuring CruiseControl .Net
This example will show you how to configure CCNet for solution consisting of projects hosted on different repositories.
The first thing you should do is to create a msbuild configuration and file structure on local file system that will hold the temporary files and results of build.
After you have all the folders and files ready (msbuild, fxcop, ndpend, etc) you should edit your ccnet.config file and follow next steps: 1. Under <cruisecontrol> section add new <project> section like this: <cruisecontrol> <project name="PrjName" workingdirectory="C:\CCNet\PrjName\"> </project> </cruisecontrol>
2. Replace PrjName with the name of your project and set the correct path to the folder where your configuration files are located.
3. Under <project> tag add a sourcecontrol tag with attribute type set to multi: <sourcecontrol type="multi"> </sourcecontrol>
4. Now add a sourceControls tag with autoGetSource attribute set to true: <sourcecontrols autogetsource="true"> </sourcecontrols>
5. For each of the projects located on different subversions add a new svn section like this: <svn> <executable>c:\program files\svn-win32-1.4.3\bin\svn.exe</executable> <trunkurl>svn://server/trunk/folder1/prj1/</trunkurl> <tagonsuccess>false</tagonsuccess> <username>username</username> <password>password</password> <workingdirectory>C:\CCNet\PrjName\Code\folder1\prj1</workingdirectory> <autogetsource>true</autogetsource> </svn>
6. Set “trunkUrl”, “username”, “password” and “workingDirectory” parameters to right values.
7. Add <tasks>, <publishers> and <triggers> sections to your ccnet.config file and save the file.
The whole configuration file should now look like this:
<cruisecontrol> <project name="PrjName" workingdirectory="C:\CCNet\PrjName\"> <sourcecontrol type="multi"> <sourcecontrols autogetsource="true"> <svn> <executable>c:\program files\svn-win32-1.4.3\bin\svn.exe</executable> <trunkurl>svn://server/trunk/folder1/prj1/</trunkurl> <tagonsuccess>false</tagonsuccess> <username>username</username> <password>password</password> <workingdirectory>C:\CCNet\PrjName\Code\folder1\prj1\</workingdirectory> <autogetsource>true</autogetsource> </svn> <svn> <executable>c:\program files\svn-win32-1.4.3\bin\svn.exe</executable> <trunkurl>svn://server/trunk/folder1/prj1/</trunkurl> <tagonsuccess>false</tagonsuccess> <username>username</username> <password>password</password> <workingdirectory>C:\CCNet\PrjName\Code\folder1\prj1\</workingdirectory> <autogetsource>true</autogetsource> </svn> <svn> <executable>c:\program files\svn-win32-1.4.3\bin\svn.exe</executable> <trunkurl>svn://server/trunk/folder1/prj1/</trunkurl> <tagonsuccess>false</tagonsuccess> <username>username</username> <password>password</password> <workingdirectory>C:\CCNet\PrjName\Code\folder1\prj1\</workingdirectory> <autogetsource>true</autogetsource> </svn> <svn> <executable>c:\program files\svn-win32-1.4.3\bin\svn.exe</executable> <trunkurl>svn://server/trunk/folder1/prj1/</trunkurl> <tagonsuccess>false</tagonsuccess> <username>username</username> <password>password</password> <workingdirectory>C:\CCNet\PrjName\Code\folder1\prj1\</workingdirectory> <autogetsource>true</autogetsource> </svn> </sourcecontrols> </sourcecontrol> <tasks> <msbuild> <executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable> <projectfile>PrjName.msbuild</projectfile> <buildargs>/noconsolelogger /p:Configuration=Debug</buildargs> <targets>BuildAll</targets> <timeout>400</timeout> <logger>C:\Program Files\CruiseControl.NET\webdashboard\bin\ThoughtWorks.CruiseControl.MsBuild.dll</logger> </msbuild> </tasks> <publishers> <merge> <files> <file>nunit-results.xml</file> <file>Coverage.xml</file> <file>CoverageReport.xsl</file> <file>PrjName.FxCop.xml</file> <file>NDependOut\ApplicationMetrics.xml</file> <file>NDependOut\AssembliesBuildOrder.xml</file> <file>NDependOut\AssembliesDependencies.xml</file> <file>NDependOut\AssembliesMetrics.xml</file> <file>NDependOut\InfoWarnings.xml</file> <file>NDependOut\NDependMain.xml</file> <file>NDependOut\TypesDependencies.xml</file> <file>NDependOut\TypesMetrics.xml</file> </files> </merge> <xmllogger> </publishers> <triggers> <!-- Check for modifications each 30 minutes --> <intervaltrigger seconds="1800" buildcondition="IfModificationExists"> </triggers> </project> </cruisecontrol>
For all the problems you might have check the ccnet.log file in CCNet\server folder.
posted by Popovic Sasa
|
|
|
Links
Get the Levi9 RSS Feed
Levi9 Global Sourcing
Previous Posts
+ Web Parts generator tool
+ Unit testing internal units/methods - Friend Assem...
+ Signing a 3rd party DLL
+ Custom paging SPGridView control
+ Serving files from server
+ Configuring CruiseControl .Net to work with multip...
+ Sharing cookies between sub-domains
Archives
+ February 2007
+ March 2007
+ April 2007
+ January 2008
+ February 2008
+ Current Posts
|
|