views:

1532

answers:

7

I have a few Visual Studio Solutions/Projects that are being worked on in my company, which now require a scheme for automatic nightly builds. Such a scheme needs to be able to check the latest versions from SVN, build the solutions, create the appropriate downloadable files (including installers, documentation, etc.), send e-mails to the developers upon errors and all sorts of other nifty things. What tool, or tool-set, should I use for this?

I used to use FinalBuilder a few years ago and I liked that a lot but I'm not sure if they support such features as nightly-builds and email messages.

+1  A: 

I've recently started using CruiseControl.NET (http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET). It works reasonably well, although configuration could be easier. CruiseControl.NET is free and open source, and seems to integrate with most standard tools, although I've personally only used it with CVS, SVN, NUnit and MSBuild.

Liedman
+13  A: 

At my work we use CCNET, but with builds on check-in more than nightly - although it's easily configured for either or both.

You can very easily set up unit testing to run on every checkin as well, FXCop testing, and a slew of other products.

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). It does have a limit of somewhere around 20 team members/projects, before it hits a pay-for window.

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 that CCNET is free free and takes very little time to set up - I'd highly recommend just going for it and seeing if it suits you, then expanding from there.

(There's another thread here where I posted pretty much the same/with a few alterations - but some of the other comments may help too! Automated Builds)

Edit to add: You can easily set up your own deployment scheme for CCNET, and there are a tonne of blog posts out there to assist, and email notifications can really be set up fairly granularly, either on all successes, all failures, when it changes from success to fail, etc. There's also built in RSS, and you could even set up your own notifiers for other systems.

crucible
+4  A: 

FinalBuilder does support emailing and just executing FinalBuilder each night will give you nightly builds. You don't really need other software for that if you don't want to.

You could also use CCNet to trigger a build when needed and have it execute FinalBuilder for the build. You can then decide if FinalBuilder or CCNet should email.

Finally FinalBuilder has a Server version which is sorta like CCNet in that it is a continues integration tool using FinalBuilder. See http://www.finalbuilder.com/finalbuilder-server.aspx

Of course the biggest advantage of CCNet is that it is free and open source.

Lars Truijens
+2  A: 

Although it costs, I highly recommend Visual Build. It works with MSBuild, and old tools like Visual Basic. It is scriptable, and can do everything from making installers to simple Continuous Integration.

Kris Erickson
+1  A: 

Luntbuild

Supports a wide variety of source control and build systems. Very customizable. Open Source. Setup takes some time, but it's not too horrible.

Dusty Campbell
A: 

Cascade supports doing a build on every single change committed to the repository.

I would not recommend doing only nightly builds -- that's a pretty long window where a build break can slip in before it's reported.

+1  A: 

We just started using Hudson here at the office.

Its free and open-source, it has a very user friendly UI. Plus there are tons of options and plugins available.

I was up and running in a matter of minutes after installing it. All the other devs here are loving it.

All in all, its a very elegant solution for Continuous Integration or Nightly Builds.

Julien Nephtali