About a year ago, I put together a PC to automate all of our QA-Ready and production builds. We don’t have a huge number of applications to build, but I wanted an automated way to build each application. Before “Build Box”, each project had one developer who was reponsible for the build.

This worked, but it had some serious limitations:

  1. It relied on a developer’s machine to the build, which meant it required access to that developer. If he/she wasn’t there, the team lead had to make sure that the machine would be accessable.
  2. Nothing was automated, no two products were built the same way. This opens the door wide open for mistakes like not having the current source code.
  3. Making a build was a major disruption for the developer who earned the build. This limited the number builds that would get buillt a day or week.

We use FinalBuilder to drive the build process. I can not say enough good things about FinalBuilder. It Just Works. With FinalBuilder, we use the following pattern to build each product:

  1. Get the latest source code. We use Vault, FinalBuilder knows how to drive Vault.
  2. Build the version information from .ini files stored in source control. With FinalBuilder, this was the easiest way to update the version number for the files. By alloing FinalBuilder to control the version resources, we can use the same mechanism for Win32 builds and for .NET builds
  3. Build the actual project or projects.
  4. Create updated installers. We use both the scripted and Windows Installer installer tools from Wise, FinalBuilder plays well with both. The only party of installer building that I can’t automate, is the code to deal with upgrades in place. With Windows Installer technology, I need to handle that myself. That only happens once per product release, it’s liveable.
  5. Deploy the latest bits to the QA server. QA gets two copies of everything. The first copy has the final filename, the second has the build number appended (ie. something_278.exe) to it.
  6. Send out an email to QA and the developers that notifies them that a new build has been released.

Now, any developer can remotely connect to the buildbox and start the build process. Of the course the fun part is getting the buildbox setup in the first place. It’s like having another developer on the team, it gets everything installed.

What to install, what to leave out…

I have two machines that I do the brunt of my programming on.  One is a P4 1.8 Ghz box, circa 2002 that was my main work horse.  Last year I got a Pentium D 2.8 Ghz and that’s the new main work horse.  Over the years, they have accumulated all the compilers that I work with (Delphi 5, Delphi 7, BDS 2006, VS 2002, VS 2003, VS 2005).   In a stunning show of solidarity, both machines had hard drive failures within a few months of each other.  The older one fell down August and the new guy blue screen in the most spectaculiar way just before Christmas.

To make a short story long, I had to repave each machine with new drives.  I have a nice long list of tools that I absolutely require to get the job done and I have been reinstalling each item as I need it.  I”ll post that list later.

When it came to the compilers, I only installed the latest of each one.  That meant BDS 2006 for my Delphi needs, and VS 2005 for my C# needs.  I didn’t install the older versions of Delphi.  That was a mistake, I should of installed Delphi 7.  I really like BDS 2006, but CodeGear (née Borland) really broke the help system.  There are two many broken links, you have to explicitly the results to Delphi, or you end up with VB references.  And the content is missing many of the examples that were in Delphi 7.

But that’s an annoyance, I installed only VS 2005 (plus SP1), completely forgetting that of the projects that I am involved with has an ASP.NET 1.1 front end.  Oops, I should have saw that one coming.  I don’t do any of the coding on that bit, but I lost the ability to step throught that code to test my BDS 2006 based web service.  I’m trying to decide if I want to install VS 2003 (plus the older rev of DevEx) just to test some code.  What happens if you install VS 2003 AFTER VS 2005?  I spent too much repaving these boxes, I don’t relish the thought of screwing it up by installing VS IDE’s out of chronological order.   I think if I really need VS 2003, I’ll create a VMWare session with Win 2K and install it there.  Or I’ll create a VMWare image of our build box (everyone should have a buildbox), it has every compiler already configured.  Supposedly, I can create a VMWare session from an actual PC, that should be an interesting trick.