Some processes performed by computer systems proceed as a sequence of discrete tasks. For software builds and deployments, for example, the discrete tasks include extracting the code, running build scripts, running tests, and deploying the code to one or more environments. This is typically done using a variety of scripts and build machines. The build machines in these cases would have the tools available to run the whole build and deploy process. This may be acceptable for a single build but is unacceptable if scaling to many different projects because it may become difficult to manage the list of requirements on a single machine.
In some examples, a single and relatively large build image is maintained that contains all of the supported software used as part of the build. To install additional software, for example, additional scripts would install the necessary software at runtime, which may be undesirable.