Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90ba586f authored by Junfeng Wu's avatar Junfeng Wu
Browse files

Add RBE environment variables config example and documentation.

Test: N/A
Change-Id: Ic80f3f192e8e3449f02d8c99058c37e97251a4d2
parent 7010c53c
Loading
Loading
Loading
Loading

docs/rbe.json

0 → 100644
+24 −0
Original line number Diff line number Diff line
{
    "env": {
        "USE_RBE": "1",

        "RBE_R8_EXEC_STRATEGY": "remote_local_fallback",
        "RBE_CXX_EXEC_STRATEGY": "remote_local_fallback",
        "RBE_D8_EXEC_STRATEGY": "remote_local_fallback",
        "RBE_JAVAC_EXEC_STRATEGY": "remote_local_fallback",
        "RBE_JAVAC": "1",
        "RBE_R8": "1",
        "RBE_D8": "1",

        "RBE_instance": "[replace with your RBE instance]",
        "RBE_service": "[replace with your RBE service endpoint]",

        "RBE_DIR": "prebuilts/remoteexecution-client/live",

        "RBE_use_application_default_credentials": "true",

        "RBE_log_dir": "/tmp",
        "RBE_output_dir": "/tmp",
        "RBE_proxy_log_dir": "/tmp"
    }
}

docs/rbe.md

0 → 100644
+70 −0
Original line number Diff line number Diff line
# Build Android Platform on Remote Build Execution

Soong is integrated with Google's Remote Build Execution(RBE) service, which
implements the
[Remote Executaion API](https://github.com/bazelbuild/remote-apis).

With RBE enabled, it can speed up the Android Platform builds by distributing
build actions through a worker pool sharing a central cache of build results.

## Configuration

To enable RBE, you need to set several environment variables before triggering
the build. You can set them through a
[environment variables config file](https://android.googlesource.com/platform/build/soong/+/master/README.md#environment-variables-config-file).
As an example, [build/soong/docs/rbe.json](rbe.json) is a config that enables
RBE in the build. Once the config file is created, you need to let Soong load
the config file by specifying `ANDROID_BUILD_ENVIRONMENT_CONFIG_DIR` environment
variable and `ANDROID_BUILD_ENVIRONMENT_CONFIG` environment variable. The
following command starts Soong with [build/soong/docs/rbe.json](rbe.json)
loaded:

```shell
ANDROID_BUILD_ENVIRONMENT_CONFIG=rbe \
ANDROID_BUILD_ENVIRONMENT_CONFIG_DIR=build/soong/doc \
  build/soong/soong_ui.bash
```

### Configuration Explanation

Below a brief explanation of each field in
[build/soong/docs/rbe.json](rbe.json):

##### USE\_RBE:
If set to 1, enable RBE for the build.

##### RBE\_CXX\_EXEC\_STRATEGY / RBE\_JAVAC\_EXEC\_STRATEGY / RBE\_R8\_EXEC\_STRATEGY / RBE\_D8\_EXEC\_STRATEGY:

Sets strategies for C++/javac/r8/d8 action types. Available options are
(**Note**: all options will update the remote cache if the right permissions to
update cache are given to the user.):

*   **local**: Only execute locally.
*   **remote**: Only execute remotely.
*   **remote_local_fallback**: Try executing remotely and fall back to local
    execution if failed.
*   **racing**: Race remote execution and local execution and use the earlier
    result.

##### RBE\_JAVAC / RBE\_R8 / RBE\_D8

If set to 1, enable javac/r8/d8 support. C++ compilation is enabled by default.

##### RBE\_service / RBE\_instance

The remote execution service endpoint and instance ID to target when calling
remote execution via gRPC to execute actions.

##### RBE\_DIR

Where to find remote client binaries (rewrapper, reproxy)

##### RBE\_use\_application\_default\_credentials

reclient uses
[application default credentials](https://cloud.google.com/sdk/gcloud/reference/auth/application-default/login)
for autentication, as generated by `gcloud auth application-default login`

##### RBE\_log\_dir/RBE\_proxy\_log\_dir/RBE\_output\_dir

Logs generated by rewrapper and reproxy will go here.