GithubHelp home page GithubHelp logo

isabella232 / remote-apis Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bazelbuild/remote-apis

0.0 0.0 0.0 368 KB

An API for caching and execution of actions on a remote system.

License: Apache License 2.0

Shell 4.04% Starlark 95.96%

remote-apis's Introduction

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.

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 server build requests from the clients above. These are then distributed to workers; some of these workers implement the Remote Worker API.

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.

Selecting language support

The repository provides a rule that you can use in your WORKSPACE file to select which languages you are using. This allows you to depend on this repository without pulling in Go rules, for instance, if you aren't using Go rules.

For instance, if you only use Java in your project, add the following to your WORKSPACE file:

load("@bazel_remote_apis//:repository_rules.bzl", "switched_rules_by_language")
switched_rules_by_language(
    name = "bazel_remote_apis_imports",
    java = True,
)

You can find the complete list of supported languages in repository_rules.bzl.

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.

remote-apis's People

Contributors

alercah avatar atetubou avatar bergsieker avatar buchgr avatar dgassaway avatar dslomov avatar edbaunton avatar edschouten avatar ericburnett avatar erikmav avatar jasharpe avatar jjardon avatar jmillikin-stripe avatar juergbi avatar keith avatar mostynb avatar peterebden avatar sadaf-matinkhoo avatar santigl avatar sstriker avatar traveltissues avatar ulfjack avatar vors avatar yannic avatar zachgrayio avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.