Automated build

Aug 20, 2010 at 4:26 PM

From: [] On Behalf Of Rob Reynolds
Sent: Monday, August 16, 2010 4:14 PM
To: Dru Sellers
Cc: Phil Haack; Simser, Bil; David Ebbo; David Fowler
Subject: Re: More thoughts about the code

What is everyone thinking about automated build? 

The only tenant I will throw on this is that an automated build must run locally. TFS, TeamCity, Hudson, and CC.NET are still considered build servers to me. 

There are a few products I know of out there for this: 

  • NAnt
  • PSake
  • Rake /Albacore
  • UppercuT

The last is a conventional build that uses NAnt at the current moment. It also has hook-ins for using WiX to set up an MSI.  

I don't want to steer anyone in that direction and would rather let the choice be of the items standing on their own. Any other automated builds out there I'm not catching?

Aug 21, 2010 at 5:45 PM

I think we'll be sticking with msbuild. We use CCNet internally but I don't have a big preference here. 

Aug 21, 2010 at 10:43 PM
dfowler wrote:

I think we'll be sticking with msbuild. We use CCNet internally but I don't have a big preference here. 

Well, msbuild and ccnet are two different animals. ccnet uses whatever build scripts you use (msbuild, nant, etc.) and manages the build.

If nobody objects I'd like to add psake as an alternate build tool. It's PowerShell based and many OSS projects are using it over MSBuild (actually going over the top 20 OSS projects none of them use MSBuild). We can keep MSBuild in the mix but offer an alternative that doesn't require an extra tool (like NAnt does).

For the build server, CCNET is fine as many shops use that and configuring the build should be outside of the project. The important thing is that the build server runs the same script(s) the developers do to build the solution, although we can include additional scripts for ccnet to run for packaging/zipping/distributing. Some shops will want to be able to do things like push a test version out with each build (say of the ATOM server if there was one included).

Aug 21, 2010 at 10:45 PM

How much work would it be to put together a simple build script using Psake? Maybe if you set something up with the code we gave you and demonstrate it, it'd help to make the case. ;) I've never used it so I have no clue. 

Aug 21, 2010 at 11:20 PM

Sure, I'll put it together with what is here. It's drop dead simple. James Kovacs (local Calgary guy, I worked with him and we did the podcast Plumbers at Work back in the day together) did a great job so there's very little you have to do to get a build together.

Aug 23, 2010 at 1:26 AM

Only reason I suggested UppercuT - the build is done. Unit testing and all. And once I get the right version of mono, it's as easy as "net-4.0,mono-4.0" to output both versions. How easy is that with PSake/MSBuild?

Aug 23, 2010 at 2:24 AM
Edited Aug 23, 2010 at 2:25 AM

I agree its all done with UppercuT and it's the cats meow. The problem with UppercuT is that it's tied down with NAnt and a few other tools isn't it? I'm not sure we can make that leap yet (see the 3rd party thread). psake is just a PowerShell version of Rake so it's less annoying than MSBuild with it's XML tax (and doesn't require any additional binaries that a developer or server would already have). No, psake isn't pre-configured for things like mono builds (but it's just a build shell so anything is possible).

Aug 23, 2010 at 3:53 AM

UC is just templated it has no other dependencies. The other tools are tools that you would use like NUnit or xUnit to run unit tests and do analysis. If the other tools are there, UC runs them, if they are not, it just moves on. I guess I need to get off my 'duff and get v2 done so there isn't a dependency on NAnt anymore. :(

PSake is fine with me though...

Sep 13, 2010 at 7:36 PM

So.. I know Codebetter has a public TeamCity CI server, but I could setup a build on the Headspring OSS server, it is running TeamCity.

Sep 13, 2010 at 7:48 PM

Maybe we should wait for some tool changes first? Currently the build can't work with CI unless you're running an enterprise or ultimate copy of Visual Studio on the server (need it for mstest and coverage) and there's no msbuild file so you're stuck running the .sln file which doesn't have any configuration to really support CI very well (unless you're running TFS).

Sep 13, 2010 at 7:52 PM

Oh.. I see that..  Negative Ghost Rider the pattern is full