Friday, September 19, 2008

Build and Release Definitions

These are the basic definitions every Build and Release Engineer should be aware of. Build and Release, these two terms are so related to each other that sometime they are used interchangeably. To minimize the confusion, I compiled these definitions.

Build and Build Management- The process of converting source code artifacts into some desired product executable file. Historically, this is thought of as "compiling," but it also includes things like linking, packaging. The control of the "source of the source", the build environment, build scripts and build schedules. The person who "manages" the build environment and controls execution of builds is called a Build Manager, even though they rarely have any management responsibilities. While in larger organizations there may well be a Manager of the Build Team, this is not what is meant by the term Build Manager. Think of Build Management as being in control of the kitchen, the equipment within it and the available ingredients, as well as cooking pies. In this analogy, a Build Manager is the head chef.

Release and Release Management- A release is the consolidation of all deliverable elements, whether resulting from a build, generated artifacts from another process or acquired from third parties, into a controlled staging area. It is generally organized into the same package(s) so that it can be deployed to customers or end users. A good release is the one which contains all the deliverables, control information and release notes in one package so the end customer need not to worry much about deployment. One can think of a release as a shrink-wrapped package full of "good stuff." Continuing the analogy, a release is a pie in a box with the appropriate labels affixed. The control of the selection of release components, the release environment and the tool-chain required to produce a release. Note that the description is very similar to that of Build Management. That is because these two activities are closely related. Release Management is analogous to a production line where many pies are produced, boxed, labeled and placed in a storage facility awaiting purchase or shipment.

Build management is the definition, support, and enforcement of processes for preparing software executables from source code (deployment) whereas Release Management is the same thing from deployment to production. Summarily Build is a process whereas Release is an artifacts.