[WIP] Bazel Build Event Stream support #811
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds support to connect Buck2 to a Bazel Build Event Stream server as found among some Bazel remote build execution platforms. It repurposes the existing RemoteEventSink used to connect to Scribe within Meta's internal Buck2 version and connects it to a Bazel Build Event Service over gRPC instead, and it adds a translation layer between Buck2 build events and Bazel build events.
This is a work in progress, only very few build events are translated so far. To test this code you can
examples/hello_world
directory,BES_URI
environment-variable, and$ cargo build --bin=buck2 $ cd examples/hello_world $ BES_URI=XYZ ../../target/debug/buck2 build :main
For example, with BuildBuddy, if you run
bazel run server -- -app.log_level debug
locally, setBES_URI=http://localhost:1985
.The Buck2 Trace-ID is used as the BES invocation ID and you can see a Buck2 build on the UI under e.g.
http://localhost:8080/invocation/e3123cfa-c350-432b-9784-8b3fe48bed14
.