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  }