|
|
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
2 Comments:
At 3/22/2007,
exortech said...
two comments: i) autogetsource="true" doesn't belong on the sourcecontrols element. also, as of ccnet 1.2, it is the default value for all sourcecontrols so you don't need to specify it at all. ii) there is an open issue with using multiple svn blocks in the same project: http://jira.public.thoughtworks.org/browse/CCNET-785
At 3/23/2007,
Popovic Sasa said...
Hello exortech,
Thank you for your comments. Here are my comments to your comments:
i) I read that autogetsource is set to "true" by default but my files were just not retrieved from Subversion before I add "autogetsource" element and autogetsource attribute to sourcecontrols element. ii) I don't see how that issue relates to multiple svn blocks? It is about VSS.
+ Blog Home
|
|
|
Links
Get the Levi9 RSS Feed
Levi9 Global Sourcing
Previous Posts
+ Sharing cookies between sub-domains
Archives
+ February 2007
+ March 2007
+ April 2007
+ January 2008
+ February 2008
|
|