Remote execution overview¶
Remote execution aims to speed up build processes by relying on two separate but related concepts: remote caching and remote execution. Remote caching allows users to share build outputs while remote execution allows the running of operations on a remote cluster of machines which may be more powerful (or different configurations) than what the user has access to locally.
ContentAddressableStorage(CAS) service: a remote storage end-point where content is addressed by digests, a digest being a pair of the hash and size of the data stored or retrieved.
ActionCache(AC) service: a mapping between build actions already performed and their corresponding resulting artifact (usually lives with the CAS service).
Executionservice: the main end-point allowing one to request build job to be performed against the build farm.
BuildGrid is combining these two interfaces in order to provide a complete remote caching and execution service. The high level architecture can be represented like this:
BuildGrid can be split up into separate endpoints. It is possible to have
CAS from the
following diagram shows a typical setup.
The flow of BuildGrid requests¶
BuildGrid uses various threads to achieve different tasks. The following diagram is an overview of the interactions between components of BuildGrid in response to a GRPC Request.
The Light Green color is used to signify distinct threads, and entities outside of the green boxes are shared among all threads.