Optimise tasks scheduling in automated builds: an RCPSP application with Buck
Alessandro Patti · 2019
Build tools have nowadays become a vital part of the software development life-cycle. With a constantly increasing size of the software projects and the spread of continuous integration and automated tests, build tools are required to guarantee both reliability of the build pipeline as well as competitive performance. Parallelise at best the jobs that a build tool performs during the build process awards indisputable benefits to companies in the market of software solutions. Nonetheless, this aspect of the build tools lacks extensive experimentation, as very few and limited optimisation are embedded in these tools. In this dissertation, we present an improved scheduling scheme developed for the Buck build tool at Uber. We do so by studying the evolution of the build tools in terms of design choices and characteristics of the most widely used build tools. We also review the literature on solution methods for the resource-constrained project scheduling problem, as it can be used to model a typical build process. We find that the adoption of a variation of a well-know heuristic is capable of significantly reduce the makespan of the build process with Buck.