blob: de3613c14f8e1c0b7f14127397956cdf714d1a4c [file] [log] [blame]
// Copyright 2018 The LUCI Authors.
//
// 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 buildbucket.v2;
option go_package = "go.chromium.org/luci/buildbucket/proto;buildbucketpb";
import "google/protobuf/timestamp.proto";
import "go.chromium.org/luci/buildbucket/proto/common.proto";
// A build step.
//
// A step may have children, see name field.
message Step {
// Name of the step, unique within the build.
// Identifies the step.
//
// Pipe character ("|") is reserved to separate parent and child step names.
// For example, value "a|b" indicates step "b" under step "a".
// If this is a child step, a parent MUST exist and MUST precede this step in
// the list of steps.
// All step names, including child and parent names recursively,
// MUST NOT be an empty string.
// For example, all of the below names are invalid.
// - |a
// - a|
// - a||b
string name = 1;
// The timestamp when the step started.
//
// MUST NOT be specified, if status is SCHEDULED.
// MUST be specified, if status is STARTED, SUCCESS, FAILURE, or INFRA_FAILURE
// MAY be specified, if status is CANCELED.
google.protobuf.Timestamp start_time = 2;
// The timestamp when the step ended.
// Present iff status is terminal.
// MUST NOT be before start_time.
google.protobuf.Timestamp end_time = 3;
// Status of the step.
// Must be specified, i.e. not STATUS_UNSPECIFIED.
Status status = 4;
// Logs produced by the step.
// Log order is up to the step.
//
// BigQuery: excluded from rows.
repeated Log logs = 5;
message MergeBuild {
// If set, then this stream is expected to be a datagram stream
// containing Build messages.
//
// This should be the stream name relative to the current build's
// $LOGDOG_NAMESPACE.
string from_logdog_stream = 1;
// If set, then this stream will be merged "in line" with this step.
//
// Properties emitted by the merge build stream will overwrite global
// outputs with the same top-level key.
//
// Steps emitted by the merge build stream will NOT have their names
// namespaced (though the log stream names are still expected to
// adhere to the regular luciexe rules).
//
// Because this is a legacy feature, this intentionally omits other fields
// which "could be" merged, because there was no affordance to emit them
// under the legacy annotator scheme:
// * output.gitiles_commit will not be merged.
// * output.logs will not be merged.
// * summary_markdown will not be merged.
//
// This is NOT a recommended mode of operation, but legacy ChromeOS
// builders rely on this behavior.
//
// See crbug.com/1310155.
bool legacy_global_namespace = 2;
}
// MergeBuild is used for go.chromium.org/luci/luciexe to indicate to the
// luciexe host process if some Build stream should be merged under this step.
//
// BigQuery: excluded from rows.
MergeBuild merge_build = 6;
// Human-readable summary of the step provided by the step itself,
// in Markdown format (https://spec.commonmark.org/0.28/).
//
// V1 equivalent: combines and supersedes Buildbot's step_text and step links and also supports
// other formatted text.
//
// BigQuery: excluded from rows.
string summary_markdown = 7;
}