Abstract
This is a Console app that is basically an altered version of CCnet.exe. This exe loads a custom DLL that inherits from and overrides some of the Functionality in the ThoughtWorks.CruiseControl.Core.dll. Namely the overridden functionality is all the things pertaining to the loading of a config file.
Instead of loading the Cruise defined config file It loads a custom config file that defines the properties It needs to attach to an instance of VSS. It then uses VSS as the source of the metadata about the project.
I iterate through every Item in VSS looking for SLN files. When an SLN file is found I check to see if it is VS 2003 or VS 2005 If it is 2003 I create a DevEnv task Item for it. If the SLN is VS 2005 I use MSBuild. The server then loads using this data and monitors these solutions as Cruise Control Projects. To add a new Solution simply check it into VSS and restart the exe.
If you'd like to try it Simply Download the file and unzip it. The Binaries are in the debug folder and will require framework 2.0. The latest Source is VS 2005 (the prior version is 2003 it lacks support for 2005 and MSBuild and simply does 2003 Solutions) if you have questions feel free to Email me.
Background
I wanted an easy way to implement CI without constant modifications of a config file for every new "project". In short if it is in VSS I wanted it to Build. The assumption being that all code in VSS is Buildable Code.
Deployment
Xcopy
Unzip the Exe modify the Config and run.
Configure
| node |
Description |
Type |
Default |
| MSBuildPath |
Path to the version of MSBuildto Use for 2005 and latter builds |
string |
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe |
| VisualStudioBuildPath |
Enables Visual Studio to Build the Projects from VS 2003 or Prior |
string |
C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv.exe |
| BuildInterval |
Interval between checks for modifications to Source |
Int |
600 |
| ModificationDelaySeconds |
Period of time the Source must be stable in VSS before a build occurs |
Int |
60 |
| WebUrl |
The Url of the Webserver that is Running the WebDashboard |
string |
http://WebServer/ccnet |
| VssUserName |
The UserName used for Logon to VSS |
string |
"ccnet" |
| VssPassword |
The Password used for Logon to VSS |
string |
"ccnet" |
| SourceDirectory |
The directory in which the current version of the Src will be loaded |
string |
"Build" |
| VssDirectory |
The Directory containing the VSS Database |
String |
"Vss\" |
| VssIniFile |
The Name of the INI file most likely this will never change |
String |
"ss.ini" |
| EnableRealeaseBuilds |
enables the building of release builds along with the default Debug Builds |
bool |
false |
Bugs and remarques
This is currently little more then a glorified Hack.
If you want to use it you will most likely have to make at least some source changes.
You can send bugs and remarques to the developer at DavidStrickland0@hotmail.com