bazelbuild remote-apis

repository·main·Indexed 19 days ago

https://github.com/bazelbuild/remote-apis

A collection of APIs, including Remote Execution, Remote Asset, and Remote Logstream, designed for large-scale distributed build execution, content-addressable storage, and real-time log streaming. The repository provides protobuf definitions and generated Go code for interacting with these services via gRPC.

Tokens
605
Snippets
2
Records
8
Agent score
16%

What's inside remote-apis

  1. Overview of the remote-apis collection

    main
    The remote-apis repository provides a suite of APIs designed to enable large-scale distributed execution and caching for source code and other inputs. The system works by uploading inputs, requesting execution, monitoring results, and caching those results in a content-addressable format to minimize redundant uploads and executions.
  2. Remote Logstream API

    main
    The Remote Logstream API supports ordered reads and writes of LogStream resources. It is intended for streaming stdout and stderr from ongoing Action executions, allowing clients to monitor logs in real-time instead of waiting for the action to complete.
  3. Remote Execution API

    main
    The Remote Execution API allows clients to request the execution of binaries on a remote system. It is primarily used by build systems (like Bazel) to distribute build and test actions across a worker pool and to provide a central cache of build results. This enables faster builds through parallel execution and result reuse.
  4. Remote Asset API

    main
    The Remote Asset API associates Qualifiers and URIs with Digests stored in Content Addressable Storage (CAS). This allows clients to use semantic identifiers (e.g., a git repository URL or a tarball location) to retrieve the corresponding Digest. Mappings can be pushed by a client or dynamically resolved and added to CAS by an asset server during a fetch.
  5. Using the APIs with Bazel

    main
    The repository includes BUILD files to build the protobuf library using Bazel. To use these APIs in your own Bazel project, declare rules such as cc_proto_library or java_proto_library that depend on the targets defined in this repository.
  6. How to use the APIs in Go

    main

    For non-Bazel build systems using Go, the repository provides generated Go code for interacting with the APIs via gRPC. You can install the package using go get and import the specific API versions you need.

    go get github.com/bazelbuild/remote-apis
    import (
        repb "github.com/bazelbuild/remote-apis/build/bazel/remote/execution/v2"
    )