# Remote worker

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

        mkdir -p /tmp/worker/work /tmp/worker/cas

        bazel-bin/src/tools/remote/worker \
            --work_path=/tmp/worker/work \
            --cas_path=/tmp/worker/cas \
            --listen_port=8080

- Then you run Bazel pointing to the worker instance.

        bazel build \
            --remote_executor=grpc://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.

## Sandboxing

If you run the worker on Linux, you can also enable sandboxing for increased
hermeticity:

        mkdir --parents /tmp/worker/work /tmp/worker/cas /tmp/worker/tmpfs

        bazel-bin/src/tools/remote/worker \
            --work_path=/tmp/worker/work \
            --cas_path=/tmp/worker/cas \
            --listen_port=8080 \
            --sandboxing \
            --sandboxing_writable_path=/run/shm \
            --sandboxing_tmpfs_dir=/tmp/worker/tmpfs \
            --sandboxing_block_network

As you can see, the specific behavior of the sandbox can be tuned via the flags

- --sandboxing_writable_path=`<path>` makes a path writable for running actions.
- --sandboxing_tmpfs_dir=`<path>` will mount a fresh, empty tmpfs for each running action on a path.
- --sandboxing_block_network will put each running action into its own network
  namespace that has no network connectivity except for its own "localhost".
  Note that due to a Linux kernel issue this might result in a loss of
  performance if you run many actions in parallel. For long running tests it
  probably won't matter much, though.
