No self-respecting engineering team works without source-code control or a bug tracker, and almost every quality-assurance (QA) team installs expensive test automation tools. Yet build teams use 20-year-old tools like Make and cobbled-together Perl scripts to run the critical stage of actually building the final product. It’s time that changed.
In fact, time’s up for creaky homegrown build systems. As engineers employ agile development methods requiring constant integration, and development schedules get squeezed by pushes for ever faster time-to-market, the hours-long nightly build is an anachronism. And when Sunnyvale hands over to Bangalore at 6 p.m., how do you define night anyway?
What’s needed is a 21st century build system that treats the build like a critical part of creating a product. It’s time to banish the hand-cranked, error-prone, dinner-to-breakfast pause in development. The 21st century build system has two key features to achieve that goal: Builds must be fast, and builds must be automatic.
Then the nightly build becomes the “espresso break” build, with many complete builds per day (or even per hour). Automatic feedback to developers from every build replaces the morning chorus of “the build broke.”
Builds will run so fast, a full build automatically would be started when a developer commits code. By the time they’ve downed another caffeine hit, developers know whether they broke the build or not. These espresso builds mean developers don’t even need to task-switch.
There’s no waiting for tomorrow, no need for an inaccurate partial build, and no excuses. Each developer integrates continuously. And, there’s no delay for the QA team. It can pick a build to suit its needs and never needs to “lose a day.”
Espresso builds also have a direct impact on quality. There’s no downtime for QA. Developers stay focused on their task list, and constant integration means no surprises.
The build becomes the heartbeat of engineering, not a daily roadblock. The best teams make the build state visible to everyone. Green and red lava lamps show at a glance a good or bad build. A free-flowing red lamp warns engineers to fix their integration problem fast and get quality back on track.
As builds move from hours to minutes, it’s possible to complete more builds and more varieties of build. Software built for multiple platforms or multiple targets is built frequently on a common target and infrequently on every target that it will ship on. Espresso builds enable complete builds on every platform and target every time, many times per day.
All of this is feasible today. A quick Google search for “parallel build” or “build automation” points the way to companies providing tools to take hours-long builds and crank them out in minutes or completely automate the build process.
Parallel build systems can take advantage of cheap hardware and free operating systems to run complete builds. It’s inexpensive to install a cluster of 1U build machines with the right software and see a nightly build become an espresso build.
There are build automation frameworks that do everything, from kicking off builds at regular intervals to integrating tightly with source code control to run builds when the code changes as well as product reports to keep upper management informed. Best of all, parallel build and build automation systems are available as open-source and commercial tools.
Many forward-thinking organizations already have deployed fully automatic, parallel build systems, and they’re reaping the benefits of continuous builds. Their engineers know the state of the complete product at all times, their QA teams always have working code to test, and their build teams don’t waste time patching holes in a sinking build system.
If you’re ready to accelerate your organization’s development with espresso builds, I’ll get the coffee on.
John Graham-Cumming holds BA and MA degrees in mathematics and computation and a doctorate in computer security from Oxford University. Prior to cofounding Electric Cloud, he was a venture consultant with Accel Partners, vice president of Internet technology at Interwoven, vice president of engineering at Scriptics Corp., and chief architect at Optimal Networks Inc. He can be reached at [email protected].