Thursday, March 3, 2011

Auto-broken Builds


As the practice of software development has matured, we have developed a number of 'tools' in order for software development to become more efficient, reliable, faster, and more dependable.  These 'tools' include things like unit tests, intellisense (auto-completion), development methodologies like agile, code analysis, source control, and automated builds.

Each one of these 'tools' helps us become a little better at what we do, but sometimes the use of these tools and processes becomes so complex that not even these tools can protect us from ourselves.  Such is the case at my current assignment where automatic builds rule the day.  The build process involves a complex orchestration of multiple project builds going off in sequential order with manual merges across branches, deployments of assemblies to appropriate servers, and multiple layers of dependent assemblies.   The process is so complex that the act of checking in code is equivalent to trying to diffuse a bomb with oven mitts on, with the likelihood of success relatively low.

Luckily, being the smart developers that we are, we have developed a new process in which to quickly identify and correct broken builds and so far the process has been working rather well.  Here is a flowchart of this process:

*The names of the innocent (and often times guilty) have been changed to protect their identity.

0 comments:

Post a Comment