| // 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; |
| } |