michelleirvine | 25660fb | 2018-10-05 09:47:51 -0700 | [diff] [blame] | 1 | --- |
| 2 | layout: documentation |
Greg Estren | c081675 | 2020-02-20 13:04:29 -0800 | [diff] [blame] | 3 | title: Remote execution overview |
michelleirvine | 25660fb | 2018-10-05 09:47:51 -0700 | [diff] [blame] | 4 | --- |
| 5 | |
Googler | a85685a | 2021-01-08 16:53:49 -0800 | [diff] [blame] | 6 | # Remote Execution Overview |
michelleirvine | 25660fb | 2018-10-05 09:47:51 -0700 | [diff] [blame] | 7 | |
Googler | 54a96a1 | 2020-12-23 16:43:39 -0800 | [diff] [blame] | 8 | This page covers the benefits, requirements, and options for running Bazel |
| 9 | with remote execution. |
| 10 | |
michelleirvine | 25660fb | 2018-10-05 09:47:51 -0700 | [diff] [blame] | 11 | By default, Bazel executes builds and tests on your local machine. Remote |
| 12 | execution of a Bazel build allows you to distribute build and test actions |
| 13 | across multiple machines, such as a datacenter. |
| 14 | |
| 15 | Remote execution provides the following benefits: |
| 16 | |
| 17 | * Faster build and test execution through scaling of nodes available |
| 18 | for parallel actions |
| 19 | * A consistent execution environment for a development team |
| 20 | * Reuse of build outputs across a development team |
| 21 | |
| 22 | Bazel uses an open-source |
| 23 | [gRPC protocol](https://github.com/bazelbuild/remote-apis) |
| 24 | to allow for remote execution and remote caching. |
| 25 | |
Greg Estren | c081675 | 2020-02-20 13:04:29 -0800 | [diff] [blame] | 26 | ## Remote execution services |
michelleirvine | 25660fb | 2018-10-05 09:47:51 -0700 | [diff] [blame] | 27 | |
| 28 | To run Bazel with remote execution, you can use one of the following: |
| 29 | |
Lszl Csomor | d7e1c12 | 2020-04-13 07:23:27 -0700 | [diff] [blame] | 30 | * Manual |
michelleirvine | 25660fb | 2018-10-05 09:47:51 -0700 | [diff] [blame] | 31 | * Use the |
| 32 | [gRPC protocol](https://github.com/bazelbuild/remote-apis) |
| 33 | directly to create your own remote execution service. |
Lszl Csomor | d7e1c12 | 2020-04-13 07:23:27 -0700 | [diff] [blame] | 34 | * Self-service |
Ed Schouten | ceffff9 | 2019-02-27 11:18:49 -0800 | [diff] [blame] | 35 | * [Buildbarn](https://github.com/buildbarn) |
michelleirvine | 25660fb | 2018-10-05 09:47:51 -0700 | [diff] [blame] | 36 | * [Buildfarm](https://github.com/bazelbuild/bazel-buildfarm) |
| 37 | * [BuildGrid](https://gitlab.com/BuildGrid/buildgrid) |
Drew Gassaway | d1316a0 | 2019-06-03 08:00:56 -0700 | [diff] [blame] | 38 | * [Scoot](https://github.com/twitter/scoot) |
Lszl Csomor | d7e1c12 | 2020-04-13 07:23:27 -0700 | [diff] [blame] | 39 | * Commercial |
daroberts | 7ea8f44 | 2020-04-30 08:39:01 -0700 | [diff] [blame] | 40 | * [EngFlow Remote Execution](https://www.engflow.com) -- Remote execution |
| 41 | and remote caching service. Can be self-hosted or hosted. |
Siggi Simonarson | 9fa5cb3 | 2020-08-03 13:43:57 -0700 | [diff] [blame] | 42 | * [BuildBuddy](https://www.buildbuddy.io) -- Remote build execution, |
| 43 | caching, and results UI. |
tatiana | f1a4cdb | 2020-12-13 23:17:36 -0800 | [diff] [blame] | 44 | * [Flare](https://www.flare.build) -- Providing a cache + CDN for Bazel |
| 45 | artifacts and Apple-focused remote builds in addition to build & test analytics. |
michelleirvine | 25660fb | 2018-10-05 09:47:51 -0700 | [diff] [blame] | 46 | |
Greg Estren | c081675 | 2020-02-20 13:04:29 -0800 | [diff] [blame] | 47 | ## Requirements |
michelleirvine | 25660fb | 2018-10-05 09:47:51 -0700 | [diff] [blame] | 48 | |
| 49 | Remote execution of Bazel builds imposes a set of mandatory configuration |
| 50 | constraints on the build. For more information, see |
Jingwen Chen | 0f4544d | 2018-12-14 16:28:16 -0800 | [diff] [blame] | 51 | [Adapting Bazel Rules for Remote Execution](remote-execution-rules.html). |