Thursday, March 18, 2010

The Evolution of a Build System Part 2

In my last post I talked about how Continuous Integration was where I started when faced with rebuilding an entire build process from scratch.  I talked about CruiseControl.Net and some of the challenges I faced at a high level.  Today I am going to talk about taking the Continuous Integration system and moving to a nightly Full Build system.

I began here:

Nightly Build and Test

  • Only built portion of code base
  • Built from the Tip
  • VC80 and VC90 would build on alternate nights
  • All platforms were built and tested serially
  • Packaging was done as a separate process only when deemed necessary
  • Close to 24 hour turn around

This is where we are now:

  • Builds all solutions and all configurations of entire mainline
  • Builds from latest Green CI Change-list #
  • Builds all platforms and compilers in same night
  • Build takes advantage of multi-core hardware and RAID drives by building concurrently where possible
  • Build and Integrated Tests timing is down to 14hrs total
  • Have deployable ISOs for all platforms prior to 10am daily

I built a couple of tools along the way and made use of my staff (thanks Scott and David) and our IT infrastructure and staff.  Being the IT Manager helped considerably.  The IT staff (thanks Jean and Luke) was extremely helpful in automating the process and continues to play a part. 

Here are some next steps:

  • Automate the deployment to a QA environment
  • Automate tests against the QA deployment
  • Continue to bring down the build time

All of this was made possible because we were able to reproduce the build environment and standardize on a process.

Till next time…