Accelerated builds – critical to agile development
Accelerated builds for continuous integration
Accelerated builds have been a topic for OpenMake Software since Meister was first created. The October 2013 issue of SD times has an article called “The reconstruction of deployment” by Alex Handy. He starts the article by talking about Builds. “In days past, there was one sure fire, always working plan for building software: start the build, then go get some coffee. Sometimes building even meant it was time to go home.” The article talks about continuous delivery and continuous integration (CI) and gives credit to CI for improving the speed of the build and deploy process. However, you must ask yourself, “are my builds really faster?” Builds, the process of compiling and linking code, has not changed at all. Yes, we have Ant and Maven and not just Make, but in essence, CI does not change the build scripts themselves. In Alex’s article, he alludes to a time in our past that builds would take hours to run. Guess what, they still take hours to run when a script is driving them. The same build script that was executed manually and took hours to run, is now just executed via Jenkins, and takes hours to run. A build script executed by Jenkins runs no faster than a build script executed in any other way. In the article Brad Hurt, VP of Product Management at AccuRev confirms this. He explains that you need to have control over the different levels of code maturity so in the case of an 8 Hour build you don’t have “random developer” code checked in that pollutes the build. In this reference to “build” Brad is talking about the compile and link process. Some people refer to the build as a set of steps that are executed before the compile, the compile and after the compile. But Brad’s reference is more accurate. He is talking about a compile process that can take hours to run. And for large projects this is not unusual. The goal is actually to never have an 8 hour build. As we mature in DevOps, we are moving away from one-off scripts, particularly around Deploy. OpenMake Meister moves away from scripts in both build and deploy. This allows intelligence in the build for building incrementally, with acceleration and parallelization decreasing build times substantially. For an incremental build, an 8 hour build can become a 10 minute build. This incremental processing is passed to the Deploy, so even deploys are incremental and not monolithic. So lets stop kidding ourselves. A Jenkins build is no faster than the script it is calling. And if the script cannot support incremental changes (agile practice) or support parallelization for speeding up monolithic compiles, then you have a really cool CI process with a very slow back end.