This directory contains script used to generate and upload RBE toolchain configs. The configs are generated for most Bazel CI containers. Check the manifest for the list of available configs.

rbe_configs_gen is used to generate the toolchain configs. It works by running Bazel inside a container to auto-detect available toolchains in it. The detected toolchains are uploaded to GCP under gs://bazel-ci/rbe-configs.

Directory structure

.
|
|-- cpp_env     # Contains environment variables to be set when generating C++ toolchain configs.
|
+-- generate.py # The python script used to generate and upload configs.

Generation

To (re)generate configs:

  1. Make sure docker is installed locally.
  2. Install rbe_configs_gen.
  3. Run ./generate.py to generate configs.
  4. Run ./generate.py --upload=all to upload configs and manifest.json.

FAQ

Do we have to do it everytime we publish Docker images?

Yes. The container image which RBE uses to run your build is determined at generation time - it's the same container used to detect the toolchains. The image used to run your remote actions can be found at .e.g rbe_default.tar/config/BUILD:

...
    "container-image": "docker://gcr.io/bazel-public/ubuntu1604-bazel-java8@sha256:135cb1647b54893531bf220001b07ac34bd2963a59af69659257cc1f121c9958",
...

How do we handle new Bazel release?

Since Bazel 4.0.0+, every release should has corresponding generated configs. For a new release, add the version number to the script and re-generate the configs.