What is BuildGrid?

BuildGrid is a Python remote execution service which implements Google’s Remote Execution API and the Remote Workers API. The project’s goal is to be able to execute build jobs remotely on a grid of computers in order to massively speed up build times. Workers on the grid should be able to run with different environments. It works with clients such as Bazel, BuildStream and RECC, and is designed to be able to work with any client that conforms to the above API protocols.

What’s Going On?

Recently BuildGrid’s scheduler was made fully stateless (at least in terms of state that needs to be persisted), with the option to run totally in-memory or use an external database for all storage of persistent state. This gets us most of the way to being able to horizontally scale BuildGrid.

We’ve also made numerous small improvements and bugfixes, and modified the platform property matching logic to be consistent with the spec.

Next, we’re finishing implementing the ability to horizontally scale BuildGrid deployments, by removing the internal communication between the ExecutionService and BotsService, which solves the problem of needing peers and bots for a specific job to all be connected to the same server.

We’re also working on implementing an indexed CAS server to faciliate a faster FindMissingBlobs() and CAS cleanup. See https://gitlab.com/BuildGrid/buildgrid/issues/181 for more details.

Getting started

Please refer to the documentation for installation and usage instructions, plus guidelines for contributing to the project.