Build Management
Build management refers to the grand finale of a well executed development effort. Aside from interpreted source codes such as PERL, PHP or Python, sources such as Java, C, C++, C#, etc. requires a compiler to link all the relevant files, headers, and libraries to make one or more executable(s).
Systems of the old used to be based on a collection of primitive scripts (often in batch, shell or make files) that performs the task of compilation. Modern development processes and requirements dictates that a more agile and continuous build model to be developed to support the demands.
Modern systems should encompass the following:
Automation
Builds must be fully automated. A Build Engineer or developer should never have to manually intervene during any part of the process. The entire life cycle starting from checking out of the source code to distributing the artifacts must be automated end to end.
Continuous Integration
Nightly builds should be a thing of the past. Code changes must be given feedback immediately and frequently. Builds should occur as frequently as developers check-in codes. Each time a code check-in has occurred, a build should be kicked off automatically. Continuous integration is in the core of agile practices.
Labeling
Builds that are release bound must have proper labeling. This step can be automated in the distribution portion of the script to keep the labeling convention consistent throughout the project’s life cycle.
Object Oriented
Build scripts should not take on the monolithic model but instead each task should be broken down into sub-script. This makes the overall manageability much simpler. If for example, you have 50 projects with 50 build scripts and a change is required to the checkout step; now you must make changes to all 50 scripts individually. If you modularized the script tasks, you would just need to make one change to one script — the checkout script.
Reporting
Reporting must be available via Email and web interface. Email should have instant feedback on whether the run was successful or has failed. Within it, it should contain a link to a web interface where more details are available in regards to the runtime error or compilation outputs.
Puzzle Pieces
Much like a car manufacturing floor, software builds should be treated similarly. Components should be built individually and then assembled into a bigger module and finally modules linked into the software suite.
By following these essential requirements, you can be sure your build management is robust and nimble enough to accommodate any changes that may arise from the complexity of software development.
There are many tools available either in the Open Source or Vendor avenue that will more than adequately achieve the above listed requirements. One of the most popular Open Source tool is Apache’s ANT. Just like its name, ants may be weak individually (task) but an army (collection of tasks) can be quite effective in achieving the impossibles.
