blob: 90ffd4a2b887063a0412fb0177660d0bdfe67e3b [file] [log] [blame]
// Copyright 2021 The LUCI Authors. All rights reserved.
// Use of this source code is governed under the Apache License, Version 2.0
// that can be found in the LICENSE file.
syntax = "proto3";
import "google/protobuf/struct.proto";
import "go.chromium.org/luci/buildbucket/proto/builder_common.proto";
import "go.chromium.org/luci/buildbucket/proto/common.proto";
package recipes.recipe_engine.placeholder;
enum LifeTime {
// This build shouldn't exceed the life of its parent.
BUILD_BOUND = 0;
// This build's lifetime shouldn't be bound to its parent.
DETACHED = 1;
}
message Buildbucket {
buildbucket.v2.BuilderID builder = 1;
}
// ChildBuild represents a step which triggers a child build.
message ChildBuild {
string id = 1;
LifeTime life_time = 2;
// swarming, RBE here later
oneof trigger {
Buildbucket buildbucket = 10;
}
}
// CollectChildren represents a step which waits for child build(s).
message CollectChildren {
// Ids of the child build step this step should collect.
repeated string child_build_step_ids = 1;
}
message FakeStep {
// The amount of time this fake step should "run" for.
//
// This will translate to a real-life pause in the execution of the recipe.
int64 duration_secs = 1;
// Sets text on this step in the UI.
string step_text = 2;
// Named links to add to the step.
map<string, string> links = 3;
// Named logs to add to the step.
//
// Multi-line values are acceptable.
map<string, string> logs = 4;
// Status for the step.
//
// FAILURE/INFRA_FAILURE/CANCELED does not affect the evaluation of the rest
// of the steps.
buildbucket.v2.Status status = 5;
// Indicate that this step was canceled.
//
// Shows up in the Step's "status_details" field.
bool canceled = 6;
// Indicate that this step had a timeout.
//
// Shows up in the Step's "status_details" field.
bool timeout = 7;
// This step should set the following output properties when it runs.
google.protobuf.Struct set_properties = 8;
// Children of this step; duration_secs will apply prior to running
// any children.
repeated Step children = 9;
// Arbitrary annotations for the step.
//
// One key may have multiple values, which is why this is not a map<string,string>.
//
// These are NOT interpreted by Buildbucket.
//
// Tag keys SHOULD indicate the domain/system that interprets them, e.g.:
//
// my_service.category = COMPILE
//
// Rather than
//
// is_compile = true
//
// This will help contextualize the tag values when looking at a build (who
// set this tag? who will interpret this tag?))
//
// The 'luci.' key prefix is reserved for LUCI's own usage.
//
// The Key may not exceed 256 bytes.
// The Value may not exceed 1024 bytes.
//
// Key and Value may not be empty.
map<string, string> tags = 10;
}
message Step {
// The name of a fake placeholder step.
string name = 1;
oneof type {
FakeStep fake_step = 2;
ChildBuild child_build = 3;
CollectChildren collect_children = 4;
}
}
message InputProps {
// A list of steps to simulate.
//
// If empty, will run a single Step like:
//
// Step {
// name: "hello world"
// duration_secs: 10
// }
repeated Step steps = 1;
// Overall status for the build.
buildbucket.v2.Status status = 4;
}