Bazel First-Time Setup¶
This document describes how to configure Bazel to connect to an EngFlow Remote Execution cluster.
1. Prepare a Docker container for remote actions¶
Remote actions are executed in a Docker container to ensure a consistent execution environment. The Docker container must include all system dependencies of actions. For example, a C++ compiler may be required.
2. Create a remote configuration¶
In Bazel, a platform expresses an environment where an action can run. When performing remote execution, Bazel is instructed to build for a special EngFlow platform. This platform carries the Docker image and other environmental configuration to the remote execution service.
Once a Docker container is ready, use the
to generate Bazel configuration for the image. For example, the following will
generate configuration for a Ubuntu 20.04 image into a
rbe_configs_gen generates a remote
platform target for EngFlow in
engflow_config/config/BUILD. It also outputs configuration for the C++
toolchain in the container into
If you already have a custom C++ compiler crosstool, it's likely easiest to
manually write the EngFlow platform rule rather than using
rbe_configs_gen. Here is an example
engflow_config/config/BUILD for an
x86_64 Linux image:
3. Set up
Configure Bazel to use the EngFlow platform in
Add common flags:
Add platform flags:
If not using a custom C++ toolchain already, add flags for the container's C++ toolchain:
If Java is required, optionally use the hermetic JDK shipped with Bazel:
Add the remote executor flags. For the
<CLUSTER_ENDPOINT>, use the host name or IP address of the Load Balancer. You may also have to specify the port, if using a non-standard one. The default ports are 443 for grpc/s, and 80 for http/s.
If you use TLS with our certificate (
We recommend using the latest available Bazel version.