go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/buildbucket/proto/step.proto (about) 1 // Copyright 2018 The LUCI Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 syntax = "proto3"; 16 17 package buildbucket.v2; 18 19 option go_package = "go.chromium.org/luci/buildbucket/proto;buildbucketpb"; 20 21 import "google/protobuf/timestamp.proto"; 22 import "go.chromium.org/luci/buildbucket/proto/common.proto"; 23 24 // A build step. 25 // 26 // A step may have children, see name field. 27 message Step { 28 // Name of the step, unique within the build. 29 // Identifies the step. 30 // 31 // Pipe character ("|") is reserved to separate parent and child step names. 32 // For example, value "a|b" indicates step "b" under step "a". 33 // If this is a child step, a parent MUST exist and MUST precede this step in 34 // the list of steps. 35 // All step names, including child and parent names recursively, 36 // MUST NOT be an empty string. 37 // For example, all of the below names are invalid. 38 // - |a 39 // - a| 40 // - a||b 41 string name = 1; 42 43 // The timestamp when the step started. 44 // 45 // MUST NOT be specified, if status is SCHEDULED. 46 // MUST be specified, if status is STARTED, SUCCESS, FAILURE, or INFRA_FAILURE 47 // MAY be specified, if status is CANCELED. 48 google.protobuf.Timestamp start_time = 2; 49 50 // The timestamp when the step ended. 51 // Present iff status is terminal. 52 // MUST NOT be before start_time. 53 google.protobuf.Timestamp end_time = 3; 54 55 // Status of the step. 56 // Must be specified, i.e. not STATUS_UNSPECIFIED. 57 Status status = 4; 58 59 // Logs produced by the step. 60 // Log order is up to the step. 61 // 62 // BigQuery: excluded from rows. 63 repeated Log logs = 5; 64 65 message MergeBuild { 66 // If set, then this stream is expected to be a datagram stream 67 // containing Build messages. 68 // 69 // This should be the stream name relative to the current build's 70 // $LOGDOG_NAMESPACE. 71 string from_logdog_stream = 1; 72 73 // If set, then this stream will be merged "in line" with this step. 74 // 75 // Properties emitted by the merge build stream will overwrite global 76 // outputs with the same top-level key. 77 // 78 // Steps emitted by the merge build stream will NOT have their names 79 // namespaced (though the log stream names are still expected to 80 // adhere to the regular luciexe rules). 81 // 82 // Because this is a legacy feature, this intentionally omits other fields 83 // which "could be" merged, because there was no affordance to emit them 84 // under the legacy annotator scheme: 85 // * output.gitiles_commit will not be merged. 86 // * output.logs will not be merged. 87 // * summary_markdown will not be merged. 88 // 89 // This is NOT a recommended mode of operation, but legacy ChromeOS 90 // builders rely on this behavior. 91 // 92 // See crbug.com/1310155. 93 bool legacy_global_namespace = 2; 94 } 95 // MergeBuild is used for go.chromium.org/luci/luciexe to indicate to the 96 // luciexe host process if some Build stream should be merged under this step. 97 // 98 // BigQuery: excluded from rows. 99 MergeBuild merge_build = 6; 100 101 // Human-readable summary of the step provided by the step itself, 102 // in Markdown format (https://spec.commonmark.org/0.28/). 103 // 104 // V1 equivalent: combines and supersedes Buildbot's step_text and step links and also supports 105 // other formatted text. 106 // 107 // BigQuery: excluded from rows. 108 string summary_markdown = 7; 109 110 // Arbitrary annotations for the step. 111 // 112 // One key may have multiple values, which is why this is not a map<string,string>. 113 // 114 // These are NOT interpreted by Buildbucket. 115 // 116 // Tag keys SHOULD indicate the domain/system that interprets them, e.g.: 117 // 118 // my_service.category = COMPILE 119 // 120 // Rather than 121 // 122 // is_compile = true 123 // 124 // This will help contextualize the tag values when looking at a build (who 125 // set this tag? who will interpret this tag?)) 126 // 127 // The 'luci.' key prefix is reserved for LUCI's own usage. 128 // 129 // The Key may not exceed 256 bytes. 130 // The Value may not exceed 1024 bytes. 131 // 132 // Key and Value may not be empty. 133 repeated StringPair tags = 8; 134 }