views:

464

answers:

2

I'm looking for a build automation solution for use with a Visual Studio solution space containing multiple projects of mixed source types (mainly Win32 C++ and C#). Also, all the code is stored in a Subversion repository. So it needs to go all the way from pulling down a working copy of the code, to compiling the source, to building the setup files.

Requirements are as follows:

Absolute Must Haves:

  • FREE
  • Easy to use GUI (I can already write a bunch of NMake scripts...this is what I don't want to do)
  • Subversion Integration (at the least be able to pull down the latest code)
  • Multiple source Language Support (doubt this matters as it's built with VS in the end)
  • End to End automation (one click build)
  • Build profiles (i.e. Intermediary vs Release)

Things I would like

  • Source file find and replace (for automatically incrementing version information in header files)
  • Email reporting
  • Automatic builds after Subversion commits
  • Web interface
  • FTP integration
  • Ability to auto-generate build file names with proper version strings

Things I don't need

  • Unit Testing support
  • Bug tracking integration
+1  A: 

Have you considered using MSBuild? It comes free with the .NET framework.

It would require a small amount of coding. For example, you'd have to create a new .net class (deriving from Task) that overrides the Execute function, then call out to SVN to update your source code. But the bulk of the set up would be in a build.xml file where you can specify solution file names, and the different configurations.

A reasonable introduction is here: MSBuild

I understand why you'd want to do this through a GUI, but IMHO the flexibility you get using MSBuild is worth the extra effort of setting it up, while not being as complex as writing it completely from scratch in another scripting language.

John Sibly
Does that support building non-.NET languages though?
Adam Haile
If you create another build task (again, a class deriving from Task and overriding Execute), you can call out to the compiler for that language. We do this for parts of our product that aren't .NET, but also to build non-.NET installation packages.
John Sibly
Before creating your own MSBuild tasks, I would recommend searching the web. For example, most SVN tasks you might need are part of the MSBuild Community Tasks, located here: http://msbuildtasks.tigris.org/
Pedro
Also the MSBuild Extension Pack: http://msbuildextensionpack.codeplex.com/
heavyd
+3  A: 

NAnt and CruiseControl.Net do all of this except it has no GUI for creating the build scripts themselves. The GUI it does have is a web front end that allows you to monitor / force builds, as well as a system tray application which does the same. If GUI creation of the scripts is a really big requirement then final builder is one of your best options, however it will cost you money. I don't think you are going to get the GUI in this space for free.

Andrew Cox
The webdashboard of ccnet can be used as a very simple GUI; you can force builds from there, look at the progress (with the appropriate plugins) and see the results of the build.Regards,Sebastiaan
Sebastiaan Megens
Cool, updated my answer to reflect that. thx
Andrew Cox