Thursday, April 26, 2007

TeamBuild and CC.Net

I just finished coding a plugin that ties TeamBuild into the Continuous Integration (CI) environment of CruiseControl.Net. TeamBuild has been without a satisfactory CI implementation (although, that might change with Orcas), so out of love for continuous integration and a need to track builds in Team Foundation Server (TFS), I went to work.

The initial build was clunky and, with my lack of knowledge of TeamBuild, didn't work very well. The second generation works much better. I have added a logger that will monitor the running build and pump build steps into TFS while the build is running (what you would expect, but man was it hard to get there:). With the new task and along with some editing of the workspace.xml file to help keep the workspace slim and trim, I've been able to convert a few of the myriads of builds to TeamBuild (I am working on the rest in the coming weeks).

One of the problems that I am still having is with the way the Visual Studio view handles hyperlinks to web sites versus file shares. I publish the log as a link to the CruiseControl.Net dashboard, but when activated, it pulls the page into Visual Studio as source (haven't figured out how to get around that one).

A second, which is more important (that's why I listed it second), is that I haven't yet figured out how to update the GlobalList so that the builds are available for reports (still working on it though).

The logger is currently only useful inside the TeamBuild plugin, but with a little tweaking can be made to report any msbuild build to TFS (not sure you want to clutter things like that or not, but one never knows).

I have offered the plugin to Martin Woodward and his TFS plug-in for CruiseControl.Net project, but in the event that it doesn't make it I am more than happy to share (of course with the express permission of my current company).