views:

764

answers:

5

My team works on a Medium sized product which takes about 2 hours to build on a single dual-core machine. As part of an effort to improve productivity I am looking for alternatives to improve hour build process.

Currently we build C++ code and .NET code using VS2005 solutions, we also have some legacy code built using makefiles and we pack the products using installshield. We also have unit tests written in UnitTest++, Nunit, CPPUnit and some tests that we wrote ourselves without any testing framework. Everything is coordinated by a set of Perl scripts that we wrote.

I am looking for a product, or a suite of products, or a bunch of non-related products that will allow me to do the following:

  1. Improve building time. I tried Incredibuild for parallelizing the build with some success. I will be happy to find more alternatives (cheaper ones???)

  2. Improve the build process definition. I need something to replace our complicated perl scripts with something that will allow me to define the build process easily.

  3. Improve our ability to discover problems in the build (maybe a web interface for looking at build outputs, highlight compilation errors, gather statistics on build times and build failures etc.

  4. Any other nice features that can help us improve our build management.

+2  A: 

consider nant: http://nant.sourceforge.net/, cruise control: http://en.wikipedia.org/wiki/Cruise_control, and a faster build system. there are some .net related links at: http://confluence.public.thoughtworks.org/dashboard.action

Ray Tayek
+2  A: 

Try FinalBuilder it's very compreshesnsive build managment tool

MichaelT
A: 

I used Automated QA's Automated Build Studio a few years ago at a previous job and it was pretty good and fairly cheap. I haven't used it since then, so I'm just recommending you look at it.

If you have an MSDN subscription you should look at TFS. TFS Build is pretty robust and is integrated into Visual Studio and works hand in hand with Team System/TFS Source Control (you didn't say what source control you're using).

sliderhouserules
+1  A: 

Sakin,

I think you may be looking for two different tools - although occassionally you will find them packaged together.

One tool would be the build management system that schedules the builds, shows you the outputs, gathers statistics, etc. Tools like FinalBuilder, CruiseControl and AnthillPro play in that space.

The other tool would be the one that tears apart your build into parallelizeable pieces and speeds the build. Incredibuild is pretty good at what they do in that respect and certainly cheaper than some alternatives. There are free options built into some of the open source tools like gmake, but my understanding is that you'd need to do some pretty serious work to get that to work with solution files.

You should be able to mix and match at will. We have customers using Anthill with Incredibuild, gmake, and a number of other build speeding tools.

EricMinick
+1  A: 

We have a process similar to yours, although it's not a VS project. Up until recently we used perl scripts and tinderbox to build and track the status of the builds and unit tests. We've recently made the jump over to Hudson and it seems to work great.

https://hudson.dev.java.net/

Don't be put off by the java label, our projects are c/c++ and they work fine. Hudson can execute shell commands, so we can build our projects (makefiles) and run our unit tests fine. Right now we have it set on a timed build, which when it finishes (if successfully) kicks all our unit tests off in parallel.

It's a great system and worth checking out if it's what you're looking for. It logs console ouput and has tons of great addons (logs and charts warning counts, disk space used size, build on CM change) and a nice web-interface for the team to watch.

Oh yea it's free..

We use Hudson too for C/C++ projects and it's fantastic! Web based configurations as well as extensive plugin support make it easy to latch on to your current build setup.
Soo Wei Tan