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