Arguably one of the more powerful features of Jenkins is its ability to dispatch build jobs across a large number of machines. It is quite easy to set up a farm of build servers, either to share the load across multiple machines, or to run build jobs in different environments. This is a very effective strategy which can potentially increase the capacity of your CI infrastructure dramatically.
Distributed builds are generally used either to absorb extra load, for example absorbing spikes in build activity by dynamically adding extra machines as required, or to run specialized build jobs in specific operating systems or environments. For example, you may need to run particular build jobs on a particular machine or operating system. For example, if you need to run web tests using Internet Explorer, you will need to use a Windows machine. Or one of your build jobs may be particularly resource-heavy, and need to be run on its own dedicated machine so as not to penalize your other build jobs.
Demand for build servers can also fluctuate over time. If you are working with product release cycles, you may need to run a much higher number of builds jobs towards the end of the cycle, for example, when more comprehensive functional and regression test suites may be more frequent.
In this chapter, we will discuss how to set up and manage a farm of build servers using Jenkins.
Jenkins uses a master/slave architecture ...