blob: b8829a016fe7d46001d826a235f9579a99c23a5d [file]
syntax = "proto2";
package build_config;
message BuildRule {
reserved 2;
// The Gerrit/Git-on-Borg hostname (e.g. eureka-internal)
optional string gob_host = 1;
// A regex to match against a branch.
optional string branch = 3;
// A regex to match against a project name.
optional string project = 4;
// The builds to be automatically scheduled when a CL is uploaded.
// These builds should be very fast (<5 mins) to run.
repeated string presubmit_builds = 5;
// The builds to be run when a user requests CQ+1 or CQ+2.
// These builds can be slower to run (5-30mins).
repeated string builds = 6;
// A name of a set of builds to be included.
repeated string build_sets = 7;
// Map of property overrides for the project level. It should consist of
// property -> override value. For example gclient_root: src.
map<string, PropertyValue> property_overrides = 8;
// List of regex file patterns to run this build against.
// If none specified will not check the files.
repeated string file_whitelist = 9;
}
message PropertyValue {
oneof value {
string string = 1;
bool bool = 2;
}
}
message BuildSet {
// List of builds in this set.
repeated string builds = 1;
}
message BuildRules {
// List of BuildRules.
repeated BuildRule build_rules = 1;
// Map build set name -> List of builds
map<string, BuildSet> build_sets = 2;
}
message JenkinsJob {
// The name of the job which should be scheduled in the Jenkins backend.
optional string job_name = 1;
}
message CastBuild {
// The name of the Cast CQ recipe to run for this build.
optional string recipe = 1;
// Override the name provided in the key and pass this builder_name into the
// recipe.
optional string builder_name = 2;
}
message BuildDetail {
reserved 2, 4, 6, 8, 9, 10, 11, 13, 14, 15;
// Whether this build is required to pass for a Verified+1.
optional bool required = 1 [default = true];
// Branches that this build is disabled on.
// Use the special value "*" to disable on all branches.
repeated string disabled_branches = 3;
// Map of property overrides for the project level. It should consist of
// property -> override value. For example gclient_root: src.
map<string, PropertyValue> property_overrides = 5;
message ScheduleRestriction {
// The minimum required branch number that this build is supported on.
optional string min_branch = 1;
// The first branch that this build is not supported on.
optional string max_branch = 2;
// If this build should only be scheduled on release branches. A release
// branch is defined as any branch matching the pattern \d\.\d+[_a-z]*.
// Note that this and master_only should never both be true.
optional bool release_only = 3 [default = false];
// If this build should only be schedule on master branches. Note that
// this and release_only should never both be true.
optional bool master_only = 4 [default = false];
}
// The restrictions used to schedule builds. These rules will be applied
// first, followed by explicit branch restrictions in disabled_branches.
optional ScheduleRestriction schedule = 7;
// Required field - please populate this with the build OWNER
optional string owner = 12;
oneof config {
// The configuration for the cast build to schedule for this build.
CastBuild cast_build = 16;
// The configuration for the jenkins job to schedule for this build.
JenkinsJob jenkins_job = 17;
}
}
message BuildDetails {
// Map of build_name -> BuildDetail
map<string, BuildDetail> build_details = 1;
}