I’ve been working on some SharePoint projects recently, and I wanted to implement Continuous Integration(CI). Unfortunately, I did not find much information when I was researching CI for SharePoint projects. My company traditionally uses CruiseControl.NET for its standard .NET projects; however, CC.NET seemed to require a good bit of configuration to get started. I was looking for something I could spin up rather quickly. I had heard Java folks raving about Hudson's ease of use out of the box, so I wanted to see if the same held true for .NET and SharePoint projects. I was amazed at how simple it was.
Since I didn’t see many people in the blogosphere talking about Hudson with .NET (and even fewer talking about Hudson with SharePoint). I thought I would give a very basic tutorial on the .NET set-up for Hudson. NOTE: Hudson is a Java .war file, so it requires Java 1.5 or later to be on the machine.
Step One – Download Hudson from https://hudson.dev.java.net/
Step Two – If Hudson downloaded as a .zip file, rename it to Hudson.war
Step Three – Run Hudson from the command line, by executing the following line:
java –jar hudson.war
Step Four – Now that Hudson is running, pull it up in the browser. By default, it will be running at http://localhost:8080/
Step Five – Hudson does a lot of things out of the box, mostly centered around Java tools. So to get .NET projects up and running, we’re going to need to download some plugins. Hudson makes this incredibly easy. From the home page, click on the “Manage Hudson” link. Then, on the manage screen, click on the “Manage Plugins” link.
On the Manage Plugins page, select the "Available" tab and select the tools required for your build. As you can see in the screenshot below, there are plugins for MSBuild and MSTest, but I have selected NAnt and NUnit as my tools of choice. There is a TFS plugin, but I haven’t used it yet. I am currently using Subversion on my projects
Once the plugins have been installed, you’ll need to restart Hudson.
Step Six – From the home page, click on the “Manage Hudson” link. Then click on the “Configure System” link. This screen will allow you to configure the email server and the default Nant installation.
Now you’re set for adding projects. And now for the easy part…
Step Seven – Add a new job. Click on the “New Job” link to start the wizard for adding new jobs. Enter a name for the job and make sure you have selected “Build a free-style software project”
The next page of the wizard allows you to set up the details of the job (where to pull the code from, how to trigger the build, which build scripts to execute, how to publish results, and who should receive email notifications). Note: I did find a limitation when working with NAnt build scripts. A job will only execute one NAnt script. This isn’t too bad of a limitation, you will just need to aggregate some targets in a single target of your build file.
Conclusion
Comparing this with other CI tools I’ve used in the past, Hudson is the easiest and has the fewest limitations. I have used tools that required heavy custom xml configuration, had severe limitations (would not poll source control for changes), or were only built for one platform. Hudson walks you through all necessary configuration on its UI, without being a hindrance to getting things done. It is very flexible in what it can do, and has amazing support with a variety of plugins. Finally, it is not just set up for one platform. Although it requires Java to execute, there is support for a variety of platforms and languages.