I currently use subversion for my version control via AhnkSVN and Visual Studio. I recently started using Tree Surgeon to set up my projects. It creates a build script automatically using NAnt. I would like to be able to automate builds regularly projects within SVN. I like the idea of doing a build on every check in but nightly builds would work as well. I would give more information or more of my thoughts but figured I would leave it open and see what the SO community has to say.
You could use CruiseControl.Net, which can do a build on every check in, nightly builds, or however you want to do it. A quick google search suggests CC.Net has some integration with NAnt already.
There's also Draco.NET, which was inspired by CruiseControl.NET and is a little more lightweight. See this article for more information on both continuous integration solutions.
CruiseControl.NET is your best option, in my opinion. It is fairly easy to extend with custom tasks if needed, works with both NAnt and MSBuild out of the box, and is very actively maintained.
You might want to consider CI-Factory. It's a continuous integration environment builder that uses CruiseControl.NET and a dozen other tools. There's an excellent screencast here: http://www.dnrtv.com/default.aspx?showID=64
As other's have mentioned we use CCNET here, which we don't usually work on a nightly build, but instead go with a Continuous Integration strategy (every check-in).
I would advise doing the same, whether it be by yourself or within a team, because you can very easily set up unit testing to run on every checkin as well, FXCop testing, and a slew of other products.
If it's just you in a one man team, and you don't have too many projects on the go, I would also advise checking out Team City as an option, because it has a free version, and the reporting and setup is reportedly much simpler (it does look nice to me).
That said, we started with CCNET, and have grown several products too large to look at Team City on the free version and are very happy with what we have.
Features that help with CCNET include:
- XML based configuration - you can usually copy and paste most of what you need.
- More or less you'll be able to plug your treesurgeon script in as your build script, and point CCNET at that as an executable task to run the compilation.
- Lots of documentation and very easy to set up nunit, ncover, fxcop, etc.
- Taskbar app that will let you know the status of your projects at any time, and it can also fire off an email or keep an RSS feed with the same information.
But I'd definitely go with running a CI build on every check-in - for the most part will run the unit tests before checking in, but let the CCNET server handle run any applications/assemblies that would have dependencies on the assembly we're checking in, and they get re-built, and re-tested on every checkin.
Given it's free and takes very little time to set up - I'd highly recommend just going for it.
We use CruiseControl.NET with both NAnt and MsBuild for our build server. We configured it so that it would have builds everytime we check code in, as well as nightly builds.
Cascade supports doing a build on every single change committed to the repository.
I am very fond of buildbot. It is open source, written in python and very easy to deploy, develop and maintain. It integrates easily with svn and a majority of other source control systems. All of your build scripting is python code so you have a lot of flexibility in terms of what your core Build Master scripts can do. You can of course also use it to fire off any other type of script or batch file.
You might check out some examples of buildbot in action:
I have been using FinalBuilder for a few years now. The advantage of FinalBuilder is that it does much more than just builds. I have it setup to do some analysis of the results, make archives of the builds, send out error logs etc. The latest version has a web interface that allows not experts to kick of builds with a click.