Remote build execution
This feature is still experimental; some aspects may not work fully or at all just yet. Proceed with caution!
From v15 onwards, Please has the ability to submit build actions to remote
executors.
By default, work is still executed on your local machine, but this means
parallelism is fundamentally limited by the available local compute capacity;
larger teams may want to improve the overall speed with access to a larger pool of
compute capacity. There are also a number of other considerable benefits such
as being able to share artifacts globally between all executions (essentially
ensuring each build action only happens once) and executing them in a more
controlled environment.
Please makes use of the Remote Execution API to distribute work. This is a generic gRPC-based API with a number of options for the server-side; see their documentation for some more information.
The API is fairly involved and there are some requirements that the server
must fulfil to work with plz. Setting it up can be a reasonable amount of
work.
A few things you might want to keep in mind are:
- Please requires version 2.1 of the Remote Execution API (for the non-specific output path field). At the time of writing relatively few servers identify as this, but we hope they'll upgrade soon.
-
Whatever tools you use of the system also have to be available on the
server; if your build rule invokes
go
you have to have that on the PATH on the remote.
This isn't needed if you use tools as other build rules though. -
One of the remote servers will need to implement the
Remote Asset API. This can be a different endpoint from the others but will be needed for
any
remote_file
rules to work.
We're actively working on a number of things to make the above easier and expect it to evolve quite a bit over the next few versions.
Come and chat with us on Gitter if you're interested in setting up Please for remote execution and would like some tips!