You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
6.8 KiB
164 lines
6.8 KiB
// Copyright 2018 Google LLC.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
|
|
syntax = "proto3";
|
|
|
|
package google.devtools.build.v1;
|
|
|
|
import "google/api/annotations.proto";
|
|
import "google/devtools/build/v1/build_events.proto";
|
|
import "google/protobuf/duration.proto";
|
|
import "google/protobuf/empty.proto";
|
|
|
|
option cc_enable_arenas = true;
|
|
option go_package = "google.golang.org/genproto/googleapis/devtools/build/v1;build";
|
|
option java_multiple_files = true;
|
|
option java_outer_classname = "BackendProto";
|
|
option java_package = "com.google.devtools.build.v1";
|
|
|
|
// A service for publishing BuildEvents. BuildEvents are generated by Build
|
|
// Systems to record actions taken during a Build. Events occur in streams,
|
|
// are identified by a StreamId, and ordered by sequence number in a stream.
|
|
//
|
|
// A Build may contain several streams of BuildEvents, depending on the systems
|
|
// that are involved in the Build. Some BuildEvents are used to declare the
|
|
// beginning and end of major portions of a Build; these are called
|
|
// LifecycleEvents, and are used (for example) to indicate the beginning or end
|
|
// of a Build, and the beginning or end of an Invocation attempt (there can be
|
|
// more than 1 Invocation in a Build if, for example, a failure occurs somewhere
|
|
// and it needs to be retried).
|
|
//
|
|
// Other, build-tool events represent actions taken by the Build tool, such as
|
|
// target objects produced via compilation, tests run, et cetera. There could be
|
|
// more than one build tool stream for an invocation attempt of a build.
|
|
service PublishBuildEvent {
|
|
// Publish a build event stating the new state of a build (typically from the
|
|
// build queue). The BuildEnqueued event must be publishd before all other
|
|
// events for the same build ID.
|
|
//
|
|
// The backend will persist the event and deliver it to registered frontend
|
|
// jobs immediately without batching.
|
|
//
|
|
// The commit status of the request is reported by the RPC's util_status()
|
|
// function. The error code is the canoncial error code defined in
|
|
// //util/task/codes.proto.
|
|
rpc PublishLifecycleEvent(PublishLifecycleEventRequest)
|
|
returns (google.protobuf.Empty) {
|
|
option (google.api.http) = {
|
|
post: "/v1/projects/{project_id=*}/lifecycleEvents:publish"
|
|
body: "*"
|
|
additional_bindings { post: "/v1/lifecycleEvents:publish" body: "*" }
|
|
};
|
|
}
|
|
|
|
// Publish build tool events belonging to the same stream to a backend job
|
|
// using bidirectional streaming.
|
|
rpc PublishBuildToolEventStream(stream PublishBuildToolEventStreamRequest)
|
|
returns (stream PublishBuildToolEventStreamResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/projects/{project_id=*}/events:publish"
|
|
body: "*"
|
|
additional_bindings { post: "/v1/events:publish" body: "*" }
|
|
};
|
|
}
|
|
}
|
|
|
|
// Publishes 'lifecycle events' that update the high-level state of a build:
|
|
// - BuildEnqueued: When a build is scheduled.
|
|
// - InvocationAttemptStarted: When work for a build starts; there can be
|
|
// multiple invocations for a build (e.g. retries).
|
|
// - InvocationAttemptCompleted: When work for a build finishes.
|
|
// - BuildFinished: When a build is finished.
|
|
message PublishLifecycleEventRequest {
|
|
// The service level of the build request. Backends only uses this value when
|
|
// the BuildEnqueued event is published to determine what level of service
|
|
// this build should receive.
|
|
enum ServiceLevel {
|
|
// Non-interactive builds can tolerate longer event latencies. This is the
|
|
// default ServiceLevel if callers do not specify one.
|
|
NONINTERACTIVE = 0;
|
|
|
|
// The events of an interactive build should be delivered with low latency.
|
|
INTERACTIVE = 1;
|
|
}
|
|
|
|
// The interactivity of this build.
|
|
ServiceLevel service_level = 1;
|
|
|
|
// The lifecycle build event. If this is a build tool event, the RPC will fail
|
|
// with INVALID_REQUEST.
|
|
OrderedBuildEvent build_event = 2;
|
|
|
|
// If the next event for this build or invocation (depending on the event
|
|
// type) hasn't been published after this duration from when {build_event}
|
|
// is written to BES, consider this stream expired. If this field is not set,
|
|
// BES backend will use its own default value.
|
|
google.protobuf.Duration stream_timeout = 3;
|
|
|
|
// Additional information about a build request. These are define by the event
|
|
// publishers, and the Build Event Service does not validate or interpret
|
|
// them. They are used while notifying internal systems of new builds and
|
|
// invocations if the OrderedBuildEvent.event type is
|
|
// BuildEnqueued/InvocationAttemptStarted.
|
|
repeated string notification_keywords = 4;
|
|
|
|
// The project this build is associated with.
|
|
// This should match the project used for the initial call to
|
|
// PublishLifecycleEvent (containing a BuildEnqueued message).
|
|
string project_id = 6;
|
|
}
|
|
|
|
// States which event has been committed. Any failure to commit will cause
|
|
// RPC errors, hence not recorded by this proto.
|
|
message PublishBuildToolEventStreamResponse {
|
|
// The stream that contains this event.
|
|
StreamId stream_id = 1;
|
|
|
|
// The sequence number of this event that has been committed.
|
|
int64 sequence_number = 2;
|
|
}
|
|
|
|
// Build event with contextual information about the stream it belongs to and
|
|
// its position in that stream.
|
|
message OrderedBuildEvent {
|
|
// Which build event stream this event belongs to.
|
|
StreamId stream_id = 1;
|
|
|
|
// The position of this event in the stream. The sequence numbers for a build
|
|
// event stream should be a sequence of consecutive natural numbers starting
|
|
// from one. (1, 2, 3, ...)
|
|
int64 sequence_number = 2;
|
|
|
|
// The actual event.
|
|
BuildEvent event = 3;
|
|
}
|
|
|
|
// Streaming request message for PublishBuildToolEventStream.
|
|
message PublishBuildToolEventStreamRequest {
|
|
// The build event with position info.
|
|
// New publishing clients should use this field rather than the 3 above.
|
|
OrderedBuildEvent ordered_build_event = 4;
|
|
|
|
// The keywords to be attached to the notification which notifies the start
|
|
// of a new build event stream. BES only reads this field when sequence_number
|
|
// or ordered_build_event.sequence_number is 1 in this message. If this field
|
|
// is empty, BES will not publish notification messages for this stream.
|
|
repeated string notification_keywords = 5;
|
|
|
|
// The project this build is associated with.
|
|
// This should match the project used for the initial call to
|
|
// PublishLifecycleEvent (containing a BuildEnqueued message).
|
|
string project_id = 6;
|
|
}
|
|
|