Build Audit and Processes A line of sight from DEV to PROD
Alec Clews http://alecthegeek.wordpress.com/ http://twitter.com/alecthegeek http://github.com/alecthegeek Voga Consulting http://voga.com.au/ Licensed under Creative Commons Attribution-Share Alike 2.5 Australia License
Summary Build software in an audited and managed environment as part of Configuration Management (CM)
Using Open Source Tools (Make and Git) as a framework for a controlled build process
Agenda The different types of build and the place of the system build
Auditing and logging requirements for system build
Implementing a CM System Build Framework The Makefile
The Driver script
The output
Motivation This paper takes a “commercial” view on the process of software change management
Desire to provide a business value quickly
Communicate  effectively   between team members
Reduce the  amount  of unsatisfying project work rework, report writing,etc...
The Change Lifecyle Document and agree the change
Implement the change (hack the code and desktop build/testing)
Integration  build and unit test
System Build in a controlled environment
System Testing (or UAT, or beta, or ...)
Release for distribution or production
Continuous Integration vs. System Builds Continuous  Integration  (c.f. Martin Fowler) Builds rapidly and frequently
Runs unit tests
Sets  up for  unit testing framework
Happens automagically
May only build small pieces
May include code instrumentation and additional debugging options
System Builds Build for production, or pre-production Compiler  optimisation , different configurations etc. Runs on a different schedule
Needs documentation
May have large scope
How might the system build be done? Fetch the sources and build them
Ask the developer for already built software!
Issues with these  approaches.  How can we answer such questions as? Which source versions were used
Under what configuration was this built? Compiler switches, which libraries and tools (the build  configuration ) Can we “re-create the build”?
“ re-create the build” is a myth After problems often asked to re-create the  environment  for forensic testing
But if we re-run the build process that does not assure that we will get the same result Version No, dates and time change: trivial difference masks possibly other major changes in our files
We usually don't have a record of the previous build configuration and can't re-create it anyway Result: we can't  reliably  get the same result twice

Software Build processes and Git