| // Copyright 2019 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| syntax = "proto2"; |
| |
| package scheduler; |
| |
| // Model of .ci.yaml. |
| // Next ID: 4 |
| message SchedulerConfig { |
| // Targets to run from this config. |
| repeated Target targets = 1; |
| // Git branches to run these targets against. |
| repeated string enabled_branches = 2; |
| // Universal platform args passed to LUCI builders. |
| // Keys are the platforms and values are the PlatformProperties (properties, dimensions etc.). |
| map<string, PlatformProperties> platform_properties = 3; |
| // Next ID: 3 |
| message PlatformProperties { |
| // Generic key, value pairs to set platform-wide properties |
| map<string, string> properties = 1; |
| // Generic key, value pairs to set platform-wide dimensions |
| // Doc for dimension and properties: https://chromium.googlesource.com/infra/luci/luci-py/+/HEAD/appengine/swarming/doc/User-Guide.md |
| map<string, string> dimensions = 2; |
| } |
| } |
| |
| // A unit of work for infrastructure to run. |
| // Next ID: 17 |
| message Target { |
| // Unique, human readable identifier. |
| optional string name = 1; |
| // Names of other targets required to succeed before triggering this target. |
| repeated string dependencies = 2; |
| // Whether this target is stable and can be used to gate commits. |
| // Defaults to false which blocks builds and does not run in presubmit. |
| optional bool bringup = 3 [default = false]; |
| // Number of minutes this target is allowed to run before being marked as failed. |
| optional int32 timeout = 4 [default = 30]; |
| // Name of the testbed this target will run on. |
| // Defaults to a linux vm. |
| optional string testbed = 5 [default = 'linux-vm']; |
| // Properties to configure infrastructure tooling. |
| map<string, string> properties = 6; |
| // Name of the LUCI builder to trigger. |
| optional string builder = 7 [deprecated = true]; |
| // Name of the scheduler to trigger this target. |
| // Defaults to being triggered by cocoon. |
| optional SchedulerSystem scheduler = 8 [default = cocoon]; |
| // Whether target should run pre-submit. Defaults to true, will run in presubmit. |
| optional bool presubmit = 9 [default = true]; |
| // Whether target should run post-submit. Defaults to true, will run in postsubmit. |
| optional bool postsubmit = 10 [default = true]; |
| // List of paths that trigger this target in presubmit when there is a diff. |
| // If no paths are given, it will always run. |
| repeated string run_if = 11; |
| // Override of enabled_branches for this target (for release targets). |
| repeated string enabled_branches = 12; |
| // Name of the LUCI recipe to use for the builder. |
| optional string recipe = 13; |
| reserved 14; // tags |
| // Properties to configure infrastructure tooling for only postsubmit runs. |
| map<string, string> postsubmit_properties = 15; |
| // Dimensions to configure swarming dimensions of LUCI builds. |
| map<string, string> dimensions = 16; |
| // Dimensions used when this build runs within a drone. |
| repeated string drone_dimensions = 17; |
| // Runs the target if files are not in these paths. |
| repeated string run_if_not = 18; |
| } |
| |
| // Schedulers supported in SchedulerConfig. |
| // Next ID: 5 |
| enum SchedulerSystem { |
| // Cocoon will handle all actions for the target (initial trigger, retries). |
| cocoon = 1; |
| // LUCI triggers the build when mirrored to GoB. Cocoon triggers retries. |
| luci = 2; |
| // Google internally uses Flutter, and validates if tip-of-tree causes breakages. |
| google_internal = 3; |
| // Special Cocoon scheduler case to trigger targets intended for beta and stable releases. |
| release = 4; |
| } |