This program implements a remote execution worker that uses gRPC to accept work requests. It can work as a remote execution worker, a cache worker, or both. The simplest setup is as follows:
First build the worker and run it.
bazel build src/tools/remote:all bazel-bin/src/tools/remote/worker \ --work_path=/tmp/test \ --listen_port=8080
Then you run Bazel pointing to the worker instance.
bazel build \ --spawn_strategy=remote --remote_cache=localhost:8080 \ --remote_executor=localhost:8080 src/tools/generate_workspace:all
The above command will build generate_workspace with remote spawn strategy that uses the local worker as the distributed caching and execution backend.
If you run the worker on Linux, you can also enable sandboxing for increased hermeticity:
bazel-bin/src/tools/remote/worker \ --work_path=/tmp/test \ --listen_port=8080 \ --sandboxing \ --sandboxing_writable_path=/run/shm \ --sandboxing_tmpfs_dir=/tmp \ --sandboxing_block_network
As you can see, the specific behavior of the sandbox can be tuned via the flags