Bug: 129998295

Clone this repo:
  1. 5b3a372 Add janitors to the OWNERS file by Sadaf Ebrahimi · 5 weeks ago main master
  2. ae21b2b Merge "Pin the Java version to 11" into main am: 8579c28d27 am: a8d4554429 by Yike Zhang · 9 months ago android15-automotiveos-dev android15-qpr1-release android15-qpr1-s3-release android15-qpr1-s4-release android15-qpr1-s5-release android15-tests-dev aml_adb_351010000 aml_ads_351017080 aml_ads_351121120 aml_art_350913340 aml_art_351011240 aml_art_351011340 aml_art_351110180 aml_ase_351010000 aml_ase_351112060 aml_ase_351114000 aml_cbr_350910020 aml_cbr_351011020 aml_cbr_351111000 aml_cfg_351010000 aml_con_351010000 aml_con_351110000 aml_doc_350915120 aml_doc_351012120 aml_doc_351113060 aml_ext_350912020 aml_ext_351122080 aml_ext_351312060 aml_hef_350921160 aml_hef_351016140 aml_hef_351120040 aml_ips_351010000 aml_ips_351111040 aml_med_350914000 aml_med_351010060 aml_mpr_350914160 aml_mpr_351013100 aml_mpr_351013160 aml_mpr_351113060 aml_mpr_351113100 aml_net_350911020 aml_net_351010000 aml_net_351010020 aml_net_351111100 aml_net_351111140 aml_odp_351020000 aml_odp_351121040 aml_per_350910080 aml_per_351014000 aml_per_351112280 aml_per_351112300 aml_res_351011000 aml_res_351111020 aml_rkp_350910000 aml_rkp_351011000 aml_sch_351010000 aml_sdk_350910000 aml_sdk_351110000 aml_sta_350911020 aml_sta_351110040 aml_tet_350911120 aml_tet_351010220 aml_tet_351110060 aml_tz6_351010000 aml_uwb_350911040 aml_uwb_351011040 aml_wif_350912040 aml_wif_351010040 aml_wif_351110060 android-15.0.0_r10 android-15.0.0_r11 android-15.0.0_r12 android-15.0.0_r13 android-15.0.0_r6 android-15.0.0_r7 android-15.0.0_r8 android-15.0.0_r9
  3. a8d4554 Merge "Pin the Java version to 11" into main am: 8579c28d27 by Yike Zhang · 9 months ago
  4. 8579c28 Merge "Pin the Java version to 11" into main by Yike Zhang · 9 months ago
  5. 529e5ac Pin the Java version to 11 by yike · 9 months ago

remote-apis

This repository contains a collection of APIs which work together to enable large scale distributed execution and caching on source code and other inputs. It describes how to upload inputs, request the execution, monitor for results, and cache those results. It‘s overall aim is to enable large scale parallel executions that wouldn’t be feasible on a single system, while minimizing the amount of uploads and executions needed by storing data in a content-addressable format and caching results.

Remote Execution API

The Remote Execution API is an API that, at its most general, allows clients to request execution of binaries on a remote system. It is intended primarily for use by build systems, such as Bazel, to distribute build and test actions through a worker pool, and also provide a central cache of build results. This allows builds to execute faster, both by reusing results already built by other clients and by allowing many actions to be executed in parallel, in excess of the resource limits of the machine running the build.

Remote Asset API

The Remote Asset API is an API to associate Qualifiers and URIs to Digests stored in Content Addressable Storage. It is primary intended to allow clients to use semantically relevant identifiers, such as a git repository or tarball location, to get the corresponding Digest. This mapping may be pushed by a client directly, or dynamically resolved and added to CAS by the asset server when fetched by a client.

Remote Logstream API

The Remote Logstream API is an API supporting ordered reads and writes of LogStream resources. It is intented primarily for streaming the stdout and stderr of ongoing Action executions, enabling clients to view them while the Action is executing instead of waiting for it's completion.

API users

There are a number of clients and services using these APIs, they are listed below.

Clients

These tools use the Remote Execution API to distribute builds to workers.

Servers

These applications implement the Remote Execution API to serve build requests from the clients above.

Workers

Servers generally distribute work to a fleet of workers. The Remote Worker API defines a generic protocol for worker and server communication, although, this API is considered too heavyweight for most use-cases. Because of that, many implementations have designed their own protocols. Links to these APIs are provided as a reference below. Adhering to any one of these protocols is not a requirement.

API Community

The Remote Execution APIs group hosts discussions related to the APIs in this repository.

Interested parties meet monthly via VC to discuss issues related to the APIs, and several contributors have organized occasional meetups, hack-a-thons, and summits. Joining the email discussion group will automatically add you to the Google Calendar invite for the monthly meeting.

Dependencies

The APIs in this repository refer to several general-purpose APIs published by Google in the Google APIs repository. You will need to refer to packages from that repository in order to generate code using this API. If you build the repository using the included BUILD files, Bazel will fetch the protobuf compiler and googleapis automatically.

Using the APIs

The repository contains BUILD files to build the protobuf library with Bazel. If you wish to use them with your own project in Bazel, you will possibly want to declare cc_proto_library, java_proto_library, etc. rules that depend on them.

Other build systems will have to run protoc on the protobuf files, and link in the googleapis and well-known proto types, manually.

Go (for non-Bazel build systems)

This repository contains the generated Go code for interacting with the API via gRPC. Get it with:

go get github.com/bazelbuild/remote-apis

Import it with, for example:

repb "github.com/bazelbuild/remote-apis/build/bazel/remote/execution/v2"

Development

Enable the git hooks to automatically generate Go proto code on commit:

git config core.hooksPath hooks/

This is a local setting, so applies only to this repository.