[recipe_proto] update cq.proto
Retrieved from https://chromium.googlesource.com/infra/luci/luci-go.git at
905eea691ac7824f7d87d75efa30e8e22f7547de.
Update README.md to give more background info.
Bug: chromium:1051164
Bug: 46095
Change-Id: I78cf87ecc946eaa6ed7891d3a7636278256a5170
diff --git a/recipe_proto/README.md b/recipe_proto/README.md
index 49ddf6c..131854f 100644
--- a/recipe_proto/README.md
+++ b/recipe_proto/README.md
@@ -4,4 +4,18 @@
```
from PB.foo.proto import Foo
-```
\ No newline at end of file
+```
+
+## Updating
+
+Retrieve https://chromium.googlesource.com/infra/luci/luci-go.git and copy the
+cq.proto from it:
+
+```
+cp ${LUCI}/cq/api/config/v2/cq.proto go.chromium.org/luci/cq/api/config/v2
+```
+
+and then comment out the options until http://fxb/46095 is resolved.
+
+As a general note, only add the ones that are not already in recipes-py at
+https://chromium.googlesource.com/infra/luci/recipes-py.git/+/master/recipe_proto/
diff --git a/recipe_proto/go.chromium.org/luci/cq/api/config/v2/cq.pb.go b/recipe_proto/go.chromium.org/luci/cq/api/config/v2/cq.pb.go
deleted file mode 100644
index 49a4dd6..0000000
--- a/recipe_proto/go.chromium.org/luci/cq/api/config/v2/cq.pb.go
+++ /dev/null
@@ -1,1439 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: go.chromium.org/luci/cq/api/config/v2/cq.proto
-
-package config
-
-import (
- fmt "fmt"
- proto "github.com/golang/protobuf/proto"
- duration "github.com/golang/protobuf/ptypes/duration"
- math "math"
-)
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = proto.Marshal
-var _ = fmt.Errorf
-var _ = math.Inf
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the proto package it is being compiled against.
-// A compilation error at this line likely means your copy of the
-// proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
-
-// A boolean with an undefined value.
-type Toggle int32
-
-const (
- Toggle_UNSET Toggle = 0
- Toggle_YES Toggle = 1
- Toggle_NO Toggle = 2
-)
-
-var Toggle_name = map[int32]string{
- 0: "UNSET",
- 1: "YES",
- 2: "NO",
-}
-
-var Toggle_value = map[string]int32{
- "UNSET": 0,
- "YES": 1,
- "NO": 2,
-}
-
-func (x Toggle) String() string {
- return proto.EnumName(Toggle_name, int32(x))
-}
-
-func (Toggle) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{0}
-}
-
-// See `allow_owner_if_submittable` doc below.
-type Verifiers_GerritCQAbility_CQAction int32
-
-const (
- Verifiers_GerritCQAbility_UNSET Verifiers_GerritCQAbility_CQAction = 0
- Verifiers_GerritCQAbility_DRY_RUN Verifiers_GerritCQAbility_CQAction = 1
- // COMMIT implies ability to trigger dry run as well.
- Verifiers_GerritCQAbility_COMMIT Verifiers_GerritCQAbility_CQAction = 2
-)
-
-var Verifiers_GerritCQAbility_CQAction_name = map[int32]string{
- 0: "UNSET",
- 1: "DRY_RUN",
- 2: "COMMIT",
-}
-
-var Verifiers_GerritCQAbility_CQAction_value = map[string]int32{
- "UNSET": 0,
- "DRY_RUN": 1,
- "COMMIT": 2,
-}
-
-func (x Verifiers_GerritCQAbility_CQAction) String() string {
- return proto.EnumName(Verifiers_GerritCQAbility_CQAction_name, int32(x))
-}
-
-func (Verifiers_GerritCQAbility_CQAction) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{4, 0, 0}
-}
-
-// This message describes a Commit Queue configuration.
-//
-// The config file commit-queue.cfg should be stored in the config directory of your
-// project, alongside cr-buildbucket.cfg.
-type Config struct {
- // Optional. If present, the CQ will refrain from processing any CLs,
- // on which CQ was triggered after the specified time.
- //
- // This is an UTC RFC3339 (stiptime(tm)) string representing the time.
- // For example, "2017-12-23T15:47:58Z" and Z is required.
- DrainingStartTime string `protobuf:"bytes,1,opt,name=draining_start_time,json=drainingStartTime,proto3" json:"draining_start_time,omitempty"`
- // Optional and deprecated.
- // URL of the CQ status app to push updates to.
- CqStatusHost string `protobuf:"bytes,2,opt,name=cq_status_host,json=cqStatusHost,proto3" json:"cq_status_host,omitempty"`
- // Optional options for how CLs should be submitted.
- SubmitOptions *SubmitOptions `protobuf:"bytes,3,opt,name=submit_options,json=submitOptions,proto3" json:"submit_options,omitempty"`
- // At least 1 ConfigGroup is required.
- ConfigGroups []*ConfigGroup `protobuf:"bytes,4,rep,name=config_groups,json=configGroups,proto3" json:"config_groups,omitempty"`
- // Toggles the use of project scoped account for Gerrit access.
- // UNSET = Disabled, subject to change in the future.
- // NO = Disabled.
- // YES = Enabled.
- ProjectScopedAccount Toggle `protobuf:"varint,5,opt,name=project_scoped_account,json=projectScopedAccount,proto3,enum=cq.config.Toggle" json:"project_scoped_account,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *Config) Reset() { *m = Config{} }
-func (m *Config) String() string { return proto.CompactTextString(m) }
-func (*Config) ProtoMessage() {}
-func (*Config) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{0}
-}
-
-func (m *Config) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Config.Unmarshal(m, b)
-}
-func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Config.Marshal(b, m, deterministic)
-}
-func (m *Config) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Config.Merge(m, src)
-}
-func (m *Config) XXX_Size() int {
- return xxx_messageInfo_Config.Size(m)
-}
-func (m *Config) XXX_DiscardUnknown() {
- xxx_messageInfo_Config.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Config proto.InternalMessageInfo
-
-func (m *Config) GetDrainingStartTime() string {
- if m != nil {
- return m.DrainingStartTime
- }
- return ""
-}
-
-func (m *Config) GetCqStatusHost() string {
- if m != nil {
- return m.CqStatusHost
- }
- return ""
-}
-
-func (m *Config) GetSubmitOptions() *SubmitOptions {
- if m != nil {
- return m.SubmitOptions
- }
- return nil
-}
-
-func (m *Config) GetConfigGroups() []*ConfigGroup {
- if m != nil {
- return m.ConfigGroups
- }
- return nil
-}
-
-func (m *Config) GetProjectScopedAccount() Toggle {
- if m != nil {
- return m.ProjectScopedAccount
- }
- return Toggle_UNSET
-}
-
-// SubmitOptions control how CQ submits CLs.
-type SubmitOptions struct {
- // Optional. Maximum number of successful CQ attempts completed by submitting
- // corresponding Gerrit CL(s) before waiting burst_delay.
- //
- // This feature today applies to all attempts processed by this CQ, across all
- // config_groups.
- //
- // Must be >0 to take effect. Requires burst_delay to be set, too.
- MaxBurst int32 `protobuf:"varint,1,opt,name=max_burst,json=maxBurst,proto3" json:"max_burst,omitempty"`
- // Optional. Delay between bursts of submissions of CQ attempts.
- // See max_burst for more info.
- //
- // Must be >0 to take effect. Requires max_burst to be set, too.
- BurstDelay *duration.Duration `protobuf:"bytes,2,opt,name=burst_delay,json=burstDelay,proto3" json:"burst_delay,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *SubmitOptions) Reset() { *m = SubmitOptions{} }
-func (m *SubmitOptions) String() string { return proto.CompactTextString(m) }
-func (*SubmitOptions) ProtoMessage() {}
-func (*SubmitOptions) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{1}
-}
-
-func (m *SubmitOptions) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SubmitOptions.Unmarshal(m, b)
-}
-func (m *SubmitOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SubmitOptions.Marshal(b, m, deterministic)
-}
-func (m *SubmitOptions) XXX_Merge(src proto.Message) {
- xxx_messageInfo_SubmitOptions.Merge(m, src)
-}
-func (m *SubmitOptions) XXX_Size() int {
- return xxx_messageInfo_SubmitOptions.Size(m)
-}
-func (m *SubmitOptions) XXX_DiscardUnknown() {
- xxx_messageInfo_SubmitOptions.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SubmitOptions proto.InternalMessageInfo
-
-func (m *SubmitOptions) GetMaxBurst() int32 {
- if m != nil {
- return m.MaxBurst
- }
- return 0
-}
-
-func (m *SubmitOptions) GetBurstDelay() *duration.Duration {
- if m != nil {
- return m.BurstDelay
- }
- return nil
-}
-
-// ConfigGroup allows one to share single verifiers config across a set of
-// Gerrit repositories, which may be in different Gerrit installations.
-type ConfigGroup struct {
- // At least 1 Gerrit instance with repositories to work with is required.
- Gerrit []*ConfigGroup_Gerrit `protobuf:"bytes,1,rep,name=gerrit,proto3" json:"gerrit,omitempty"`
- // Optional. If specified, CQ will consider sets of dependent CLs to test and
- // submit at the same time.
- //
- // Typical use-case is testing & submitting changes to multiple repos at the
- // same time, in which case all such repos must be declared up-front in
- // `Gerrit` part of this config_group.
- CombineCls *CombineCLs `protobuf:"bytes,4,opt,name=combine_cls,json=combineCls,proto3" json:"combine_cls,omitempty"`
- // Defines how to verify a CL before submitting it. Required.
- Verifiers *Verifiers `protobuf:"bytes,2,opt,name=verifiers,proto3" json:"verifiers,omitempty"`
- // EXPERIMENTAL! TODO(tandrii, crbug/966115): add better doc or remove.
- //
- // If set, this ConfigGroup will be used if no other ConfigGroup matches.
- //
- // At most 1 config_group can be YES.
- //
- // Example use is to define specific config_group for refs/heads/master,
- // and fallback one for refs/heads/* which will pick up all CLs on
- // non-master branches.
- Fallback Toggle `protobuf:"varint,5,opt,name=fallback,proto3,enum=cq.config.Toggle" json:"fallback,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *ConfigGroup) Reset() { *m = ConfigGroup{} }
-func (m *ConfigGroup) String() string { return proto.CompactTextString(m) }
-func (*ConfigGroup) ProtoMessage() {}
-func (*ConfigGroup) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{2}
-}
-
-func (m *ConfigGroup) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ConfigGroup.Unmarshal(m, b)
-}
-func (m *ConfigGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ConfigGroup.Marshal(b, m, deterministic)
-}
-func (m *ConfigGroup) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ConfigGroup.Merge(m, src)
-}
-func (m *ConfigGroup) XXX_Size() int {
- return xxx_messageInfo_ConfigGroup.Size(m)
-}
-func (m *ConfigGroup) XXX_DiscardUnknown() {
- xxx_messageInfo_ConfigGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConfigGroup proto.InternalMessageInfo
-
-func (m *ConfigGroup) GetGerrit() []*ConfigGroup_Gerrit {
- if m != nil {
- return m.Gerrit
- }
- return nil
-}
-
-func (m *ConfigGroup) GetCombineCls() *CombineCLs {
- if m != nil {
- return m.CombineCls
- }
- return nil
-}
-
-func (m *ConfigGroup) GetVerifiers() *Verifiers {
- if m != nil {
- return m.Verifiers
- }
- return nil
-}
-
-func (m *ConfigGroup) GetFallback() Toggle {
- if m != nil {
- return m.Fallback
- }
- return Toggle_UNSET
-}
-
-// Enumerates repositories on a Gerrit instance for which CQ should work.
-type ConfigGroup_Gerrit struct {
- // Gerrit URL, e.g., https://chromium-review.googlesource.com.
- // No trailing slashes allowed.
- Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
- // Gerrit projects of this Gerrit instance to work with.
- //
- // At least 1 required.
- Projects []*ConfigGroup_Gerrit_Project `protobuf:"bytes,2,rep,name=projects,proto3" json:"projects,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *ConfigGroup_Gerrit) Reset() { *m = ConfigGroup_Gerrit{} }
-func (m *ConfigGroup_Gerrit) String() string { return proto.CompactTextString(m) }
-func (*ConfigGroup_Gerrit) ProtoMessage() {}
-func (*ConfigGroup_Gerrit) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{2, 0}
-}
-
-func (m *ConfigGroup_Gerrit) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ConfigGroup_Gerrit.Unmarshal(m, b)
-}
-func (m *ConfigGroup_Gerrit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ConfigGroup_Gerrit.Marshal(b, m, deterministic)
-}
-func (m *ConfigGroup_Gerrit) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ConfigGroup_Gerrit.Merge(m, src)
-}
-func (m *ConfigGroup_Gerrit) XXX_Size() int {
- return xxx_messageInfo_ConfigGroup_Gerrit.Size(m)
-}
-func (m *ConfigGroup_Gerrit) XXX_DiscardUnknown() {
- xxx_messageInfo_ConfigGroup_Gerrit.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConfigGroup_Gerrit proto.InternalMessageInfo
-
-func (m *ConfigGroup_Gerrit) GetUrl() string {
- if m != nil {
- return m.Url
- }
- return ""
-}
-
-func (m *ConfigGroup_Gerrit) GetProjects() []*ConfigGroup_Gerrit_Project {
- if m != nil {
- return m.Projects
- }
- return nil
-}
-
-type ConfigGroup_Gerrit_Project struct {
- // Repository name inside Gerrit host. Required.
- //
- // No leading or trailing slashes allowed, no '.git' at the end.
- // 'a/' prefix is also not allowed (it's used on *.googlesource.com for
- // forcing authentication).
- //
- // Examples on https://chromium-review.googlesource.com:
- // catapult
- // chromium/src
- // chromium/tools/depot_tools
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Limit CLs in this repo to only these refs. Required.
- //
- // If not specified, defaults to "refs/heads/master".
- //
- // NOTE: your Gerrit admin must configure Gerrit ACLs such that CQ has
- // read access to these refs, otherwise your users will be waiting for CQ
- // to act on their CLs forever.
- //
- // Regular expression is validated by https://github.com/google/re2 library.
- //
- // NOTE: Git globs aren't supported. Convert them to a regular expression,
- // e.g., Git glob "refs/heads/*" should be "refs/heads/[^/]+".
- // However, users typically expect "refs/heads/.+", since expectation is
- // that every typical Git branch to be CQ-able, including
- // "refs/heads/experimental/foobar".
- RefRegexp []string `protobuf:"bytes,2,rep,name=ref_regexp,json=refRegexp,proto3" json:"ref_regexp,omitempty"`
- CrosMigration *ConfigGroup_Gerrit_Project_CrOSMigration `protobuf:"bytes,3,opt,name=cros_migration,json=crosMigration,proto3" json:"cros_migration,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *ConfigGroup_Gerrit_Project) Reset() { *m = ConfigGroup_Gerrit_Project{} }
-func (m *ConfigGroup_Gerrit_Project) String() string { return proto.CompactTextString(m) }
-func (*ConfigGroup_Gerrit_Project) ProtoMessage() {}
-func (*ConfigGroup_Gerrit_Project) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{2, 0, 0}
-}
-
-func (m *ConfigGroup_Gerrit_Project) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ConfigGroup_Gerrit_Project.Unmarshal(m, b)
-}
-func (m *ConfigGroup_Gerrit_Project) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ConfigGroup_Gerrit_Project.Marshal(b, m, deterministic)
-}
-func (m *ConfigGroup_Gerrit_Project) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ConfigGroup_Gerrit_Project.Merge(m, src)
-}
-func (m *ConfigGroup_Gerrit_Project) XXX_Size() int {
- return xxx_messageInfo_ConfigGroup_Gerrit_Project.Size(m)
-}
-func (m *ConfigGroup_Gerrit_Project) XXX_DiscardUnknown() {
- xxx_messageInfo_ConfigGroup_Gerrit_Project.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConfigGroup_Gerrit_Project proto.InternalMessageInfo
-
-func (m *ConfigGroup_Gerrit_Project) GetName() string {
- if m != nil {
- return m.Name
- }
- return ""
-}
-
-func (m *ConfigGroup_Gerrit_Project) GetRefRegexp() []string {
- if m != nil {
- return m.RefRegexp
- }
- return nil
-}
-
-func (m *ConfigGroup_Gerrit_Project) GetCrosMigration() *ConfigGroup_Gerrit_Project_CrOSMigration {
- if m != nil {
- return m.CrosMigration
- }
- return nil
-}
-
-// DO NOT USE. TODO(crbug/965615, tandrii): delete this.
-// HACK(cbrug/965615). Only for CrOS during LUCI CQ migration.
-type ConfigGroup_Gerrit_Project_CrOSMigration struct {
- // % of new CQ attempts which LUCI CQ will process itself.
- // The rest will be delegated to legacy CrOS CQ.
- // If not set, implies 0%, ie all CLs are delegated.
- // To set these per ref_regexp of a single repo, duplicate project{}
- // block for this repo but with diff regexp.
- LuciPercentage float32 `protobuf:"fixed32,1,opt,name=luci_percentage,json=luciPercentage,proto3" json:"luci_percentage,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *ConfigGroup_Gerrit_Project_CrOSMigration) Reset() {
- *m = ConfigGroup_Gerrit_Project_CrOSMigration{}
-}
-func (m *ConfigGroup_Gerrit_Project_CrOSMigration) String() string { return proto.CompactTextString(m) }
-func (*ConfigGroup_Gerrit_Project_CrOSMigration) ProtoMessage() {}
-func (*ConfigGroup_Gerrit_Project_CrOSMigration) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{2, 0, 0, 0}
-}
-
-func (m *ConfigGroup_Gerrit_Project_CrOSMigration) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ConfigGroup_Gerrit_Project_CrOSMigration.Unmarshal(m, b)
-}
-func (m *ConfigGroup_Gerrit_Project_CrOSMigration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ConfigGroup_Gerrit_Project_CrOSMigration.Marshal(b, m, deterministic)
-}
-func (m *ConfigGroup_Gerrit_Project_CrOSMigration) XXX_Merge(src proto.Message) {
- xxx_messageInfo_ConfigGroup_Gerrit_Project_CrOSMigration.Merge(m, src)
-}
-func (m *ConfigGroup_Gerrit_Project_CrOSMigration) XXX_Size() int {
- return xxx_messageInfo_ConfigGroup_Gerrit_Project_CrOSMigration.Size(m)
-}
-func (m *ConfigGroup_Gerrit_Project_CrOSMigration) XXX_DiscardUnknown() {
- xxx_messageInfo_ConfigGroup_Gerrit_Project_CrOSMigration.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_ConfigGroup_Gerrit_Project_CrOSMigration proto.InternalMessageInfo
-
-func (m *ConfigGroup_Gerrit_Project_CrOSMigration) GetLuciPercentage() float32 {
- if m != nil {
- return m.LuciPercentage
- }
- return 0
-}
-
-// CombineCLs defines how CQ works with >1 CL per attempt.
-//
-// Dependencies between CLs are either implicit via Git child->parent
-// relationship (e.g. stacked CLs in Gerrit) or explicit via "CQ-Depend:"
-// footer in CL description (next to Change-Id:). "CQ-Depend" may span
-// across repositories and even Gerrit hosts. For example, a CL on
-// https://pdfium-review.googlesource.com may declare dependency on
-// https://chromium-review.googlesource.com/1111111 by adding this footer:
-//
-// CQ-Depend: chromium:1111111
-//
-// The "chromium" part means that 1111111 is on the
-// chromium-review.googlesource.com host. It can be omitted if dependency
-// is on the same host as the CL depending on it.
-//
-// CQ-Depend alone or with Git dependencies may form cycles, which is useful
-// to require CQ to test & submit all CLs in a cycle at the same time, never
-// alone.
-//
-// A user must vote on CQ label on **each CL** individually. Since it can't be
-// instantaneous, `stabilization_delay` controls how long CQ waits for all
-// CQ+1/2 votes before computing maximal expanded set of CLs and starting the
-// attempt.
-//
-// For any CL with CQ+1/2 vote, each of its dependency must have the same CQ
-// vote and be configured for CQ **in the same config group**, else CQ would
-// abort the attempt with appropriate error message.
-//
-// Each tryjob CQ triggers via Buildbucket will be associated with each CL of
-// the attempt via `gerrit_changes` parameter of Buildbucket. These changes are
-// then available to a build as it is being executed. If ran via recipes,
-// the `ordered_gerrit_changes` property of
-// https://chromium.googlesource.com/infra/luci/recipes-py/+/HEAD/README.recipes.md#class-cqapi_recipeapi
-// can be used to CLs in the right order.
-//
-// WARNING: When submitting CLs, CQ can not do so atomically (all submitted or
-// none submitted) because Gerrit doesn't support this even for the same repo &
-// target_ref.
-type CombineCLs struct {
- // Roughly, how long CQ waits for CQ to be triggered on each of the related
- // CLs.
- //
- // Must be greater than 10s.
- // 30s is recommended.
- //
- // Technically precise definition is time to wait since the latest CL among
- // related ones receives CQ+1/2 vote before starting actual attempt.
- //
- // For example, during this delay, a CQ vote may be added on another CL
- // which depends on previously CQ-ed CL in this not-yet-started attempt. Then,
- // CQ would extend the attempt with additional CL and reset the waiting
- // counter.
- //
- // Additional implication is that a standalone CL w/o any other relations to
- // other CLs will need to wait this much time before CQ would start processing
- // it (i.e., before it triggers first tryjob).
- StabilizationDelay *duration.Duration `protobuf:"bytes,1,opt,name=stabilization_delay,json=stabilizationDelay,proto3" json:"stabilization_delay,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *CombineCLs) Reset() { *m = CombineCLs{} }
-func (m *CombineCLs) String() string { return proto.CompactTextString(m) }
-func (*CombineCLs) ProtoMessage() {}
-func (*CombineCLs) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{3}
-}
-
-func (m *CombineCLs) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_CombineCLs.Unmarshal(m, b)
-}
-func (m *CombineCLs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_CombineCLs.Marshal(b, m, deterministic)
-}
-func (m *CombineCLs) XXX_Merge(src proto.Message) {
- xxx_messageInfo_CombineCLs.Merge(m, src)
-}
-func (m *CombineCLs) XXX_Size() int {
- return xxx_messageInfo_CombineCLs.Size(m)
-}
-func (m *CombineCLs) XXX_DiscardUnknown() {
- xxx_messageInfo_CombineCLs.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_CombineCLs proto.InternalMessageInfo
-
-func (m *CombineCLs) GetStabilizationDelay() *duration.Duration {
- if m != nil {
- return m.StabilizationDelay
- }
- return nil
-}
-
-// Verifiers are various types of checks that a Commit Queue performs on a CL.
-// All verifiers must pass in order for a CL to be submitted. Configuration file
-// describes types of verifiers that should be applied to each CL and their
-// parameters.
-type Verifiers struct {
- // Required. GerritCQAbility ensures that a user who triggered
- // this CQ attempt actually has rights to do so based on 3 factors:
- // * membership of the user in committers & dryrunners group,
- // * the state of CL/patchset on which CQ is triggered,
- // * relationship of the user to the CL.
- GerritCqAbility *Verifiers_GerritCQAbility `protobuf:"bytes,1,opt,name=gerrit_cq_ability,json=gerritCqAbility,proto3" json:"gerrit_cq_ability,omitempty"`
- // This verifier is used to check tree status before committing a CL. If the
- // tree is closed, then the verifier will wait until it is reopened.
- TreeStatus *Verifiers_TreeStatus `protobuf:"bytes,2,opt,name=tree_status,json=treeStatus,proto3" json:"tree_status,omitempty"`
- // This verifier triggers a set of builds through Buildbucket.
- //
- // CQ automatically retries failed tryjobs and only allows CL to land if each
- // builder has succeeded in the latest retry.
- // If a given tryjob result is too old (>1 day) it is ignored.
- //
- // Typically, builds from Buildbucket are executed on LUCI stack, however, CQ
- // is agnostic to how and where builds are executed.
- Tryjob *Verifiers_Tryjob `protobuf:"bytes,3,opt,name=tryjob,proto3" json:"tryjob,omitempty"`
- // CQLinter is for internal CQ use only. DO NOT USE IN YOUR cq.cfg.
- Cqlinter *Verifiers_CQLinter `protobuf:"bytes,4,opt,name=cqlinter,proto3" json:"cqlinter,omitempty"`
- // Fake is for internal CQ use only. DO NOT USE IN YOUR cq.cfg.
- Fake *Verifiers_Fake `protobuf:"bytes,5,opt,name=fake,proto3" json:"fake,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *Verifiers) Reset() { *m = Verifiers{} }
-func (m *Verifiers) String() string { return proto.CompactTextString(m) }
-func (*Verifiers) ProtoMessage() {}
-func (*Verifiers) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{4}
-}
-
-func (m *Verifiers) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Verifiers.Unmarshal(m, b)
-}
-func (m *Verifiers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Verifiers.Marshal(b, m, deterministic)
-}
-func (m *Verifiers) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Verifiers.Merge(m, src)
-}
-func (m *Verifiers) XXX_Size() int {
- return xxx_messageInfo_Verifiers.Size(m)
-}
-func (m *Verifiers) XXX_DiscardUnknown() {
- xxx_messageInfo_Verifiers.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Verifiers proto.InternalMessageInfo
-
-func (m *Verifiers) GetGerritCqAbility() *Verifiers_GerritCQAbility {
- if m != nil {
- return m.GerritCqAbility
- }
- return nil
-}
-
-func (m *Verifiers) GetTreeStatus() *Verifiers_TreeStatus {
- if m != nil {
- return m.TreeStatus
- }
- return nil
-}
-
-func (m *Verifiers) GetTryjob() *Verifiers_Tryjob {
- if m != nil {
- return m.Tryjob
- }
- return nil
-}
-
-func (m *Verifiers) GetCqlinter() *Verifiers_CQLinter {
- if m != nil {
- return m.Cqlinter
- }
- return nil
-}
-
-func (m *Verifiers) GetFake() *Verifiers_Fake {
- if m != nil {
- return m.Fake
- }
- return nil
-}
-
-type Verifiers_GerritCQAbility struct {
- // Required. List of chrome-infra-auth groups, whose members are authorized
- // to trigger full CQ runs.
- //
- // Typically, such groups are named "project-<name>-committers".
- CommitterList []string `protobuf:"bytes,1,rep,name=committer_list,json=committerList,proto3" json:"committer_list,omitempty"`
- // Optional, but strongly recommended. List of chrome-infra-auth groups,
- // whose members are authorized to trigger CQ dry run on Gerrit CLs they own
- // (not to be confused with OWNER files) even if CL hasn't been approved.
- //
- // Typically, such groups are named "project-<name>-tryjob-access".
- DryRunAccessList []string `protobuf:"bytes,2,rep,name=dry_run_access_list,json=dryRunAccessList,proto3" json:"dry_run_access_list,omitempty"`
- // Optional. allow_submit_with_open_deps controls how CQ full run behaves
- // when current Gerrit CL has open dependencies (not yet submitted CLs on
- // which *this* CL depends).
- //
- // If set to false (default), CQ will abort full run attempt immediately if
- // open dependencies are detected.
- //
- // If set to true, then CQ will not abort full run and upon passing all
- // other verifiers, CQ will attempt to submit the CL regardless of open
- // dependencies and whether CQ verified those open dependencies.
- // In turn, if Gerrit project config allows this, Gerrit will execute submit
- // of all dependent CLs first and then this CL.
- AllowSubmitWithOpenDeps bool `protobuf:"varint,3,opt,name=allow_submit_with_open_deps,json=allowSubmitWithOpenDeps,proto3" json:"allow_submit_with_open_deps,omitempty"`
- // Optional. Allow CL owner to trigger CQ dry or full run on their own CL,
- // even if not a member of `committer_list` or `dry_run_access_list`.
- // Defaults to no such allowance.
- //
- // WARNING: using this option is not recommended if you have sticky
- // Code-Review label because this allows a malicious developer to upload
- // an good looking patchset at first, get code review approval,
- // and then upload a bad patchset and CQ it right away.
- //
- // CL owner is Gerrit user owning a CL, i.e., its first patchset uploader.
- // not to be confused with OWNERS files.
- AllowOwnerIfSubmittable Verifiers_GerritCQAbility_CQAction `protobuf:"varint,4,opt,name=allow_owner_if_submittable,json=allowOwnerIfSubmittable,proto3,enum=cq.config.Verifiers_GerritCQAbility_CQAction" json:"allow_owner_if_submittable,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *Verifiers_GerritCQAbility) Reset() { *m = Verifiers_GerritCQAbility{} }
-func (m *Verifiers_GerritCQAbility) String() string { return proto.CompactTextString(m) }
-func (*Verifiers_GerritCQAbility) ProtoMessage() {}
-func (*Verifiers_GerritCQAbility) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{4, 0}
-}
-
-func (m *Verifiers_GerritCQAbility) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Verifiers_GerritCQAbility.Unmarshal(m, b)
-}
-func (m *Verifiers_GerritCQAbility) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Verifiers_GerritCQAbility.Marshal(b, m, deterministic)
-}
-func (m *Verifiers_GerritCQAbility) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Verifiers_GerritCQAbility.Merge(m, src)
-}
-func (m *Verifiers_GerritCQAbility) XXX_Size() int {
- return xxx_messageInfo_Verifiers_GerritCQAbility.Size(m)
-}
-func (m *Verifiers_GerritCQAbility) XXX_DiscardUnknown() {
- xxx_messageInfo_Verifiers_GerritCQAbility.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Verifiers_GerritCQAbility proto.InternalMessageInfo
-
-func (m *Verifiers_GerritCQAbility) GetCommitterList() []string {
- if m != nil {
- return m.CommitterList
- }
- return nil
-}
-
-func (m *Verifiers_GerritCQAbility) GetDryRunAccessList() []string {
- if m != nil {
- return m.DryRunAccessList
- }
- return nil
-}
-
-func (m *Verifiers_GerritCQAbility) GetAllowSubmitWithOpenDeps() bool {
- if m != nil {
- return m.AllowSubmitWithOpenDeps
- }
- return false
-}
-
-func (m *Verifiers_GerritCQAbility) GetAllowOwnerIfSubmittable() Verifiers_GerritCQAbility_CQAction {
- if m != nil {
- return m.AllowOwnerIfSubmittable
- }
- return Verifiers_GerritCQAbility_UNSET
-}
-
-type Verifiers_TreeStatus struct {
- // Required. URL of the project tree status app.
- Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *Verifiers_TreeStatus) Reset() { *m = Verifiers_TreeStatus{} }
-func (m *Verifiers_TreeStatus) String() string { return proto.CompactTextString(m) }
-func (*Verifiers_TreeStatus) ProtoMessage() {}
-func (*Verifiers_TreeStatus) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{4, 1}
-}
-
-func (m *Verifiers_TreeStatus) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Verifiers_TreeStatus.Unmarshal(m, b)
-}
-func (m *Verifiers_TreeStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Verifiers_TreeStatus.Marshal(b, m, deterministic)
-}
-func (m *Verifiers_TreeStatus) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Verifiers_TreeStatus.Merge(m, src)
-}
-func (m *Verifiers_TreeStatus) XXX_Size() int {
- return xxx_messageInfo_Verifiers_TreeStatus.Size(m)
-}
-func (m *Verifiers_TreeStatus) XXX_DiscardUnknown() {
- xxx_messageInfo_Verifiers_TreeStatus.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Verifiers_TreeStatus proto.InternalMessageInfo
-
-func (m *Verifiers_TreeStatus) GetUrl() string {
- if m != nil {
- return m.Url
- }
- return ""
-}
-
-type Verifiers_Tryjob struct {
- // Builders on which tryjobs should be triggered.
- Builders []*Verifiers_Tryjob_Builder `protobuf:"bytes,1,rep,name=builders,proto3" json:"builders,omitempty"`
- // Optional, defaulting to no retries whatsoever.
- RetryConfig *Verifiers_Tryjob_RetryConfig `protobuf:"bytes,2,opt,name=retry_config,json=retryConfig,proto3" json:"retry_config,omitempty"`
- // EXPERIMENTAL. WORK IN PROGRESS. https://crbug.com/909895.
- // Optional. If YES, running or not-yet-started tryjobs will be cancelled as
- // soon as substantially different patchset is uploaded to a CL.
- CancelStaleTryjobs Toggle `protobuf:"varint,3,opt,name=cancel_stale_tryjobs,json=cancelStaleTryjobs,proto3,enum=cq.config.Toggle" json:"cancel_stale_tryjobs,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *Verifiers_Tryjob) Reset() { *m = Verifiers_Tryjob{} }
-func (m *Verifiers_Tryjob) String() string { return proto.CompactTextString(m) }
-func (*Verifiers_Tryjob) ProtoMessage() {}
-func (*Verifiers_Tryjob) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{4, 2}
-}
-
-func (m *Verifiers_Tryjob) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Verifiers_Tryjob.Unmarshal(m, b)
-}
-func (m *Verifiers_Tryjob) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Verifiers_Tryjob.Marshal(b, m, deterministic)
-}
-func (m *Verifiers_Tryjob) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Verifiers_Tryjob.Merge(m, src)
-}
-func (m *Verifiers_Tryjob) XXX_Size() int {
- return xxx_messageInfo_Verifiers_Tryjob.Size(m)
-}
-func (m *Verifiers_Tryjob) XXX_DiscardUnknown() {
- xxx_messageInfo_Verifiers_Tryjob.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Verifiers_Tryjob proto.InternalMessageInfo
-
-func (m *Verifiers_Tryjob) GetBuilders() []*Verifiers_Tryjob_Builder {
- if m != nil {
- return m.Builders
- }
- return nil
-}
-
-func (m *Verifiers_Tryjob) GetRetryConfig() *Verifiers_Tryjob_RetryConfig {
- if m != nil {
- return m.RetryConfig
- }
- return nil
-}
-
-func (m *Verifiers_Tryjob) GetCancelStaleTryjobs() Toggle {
- if m != nil {
- return m.CancelStaleTryjobs
- }
- return Toggle_UNSET
-}
-
-type Verifiers_Tryjob_Builder struct {
- // Required. Name of the builder as <project>/<bucket>/<builder>
- //
- // Examples:
- // "chromium/try/linux-tester"
- // "other-project/try/shared-try-builder"
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Optional. If true, a fresh build will be required for each CQ attempt.
- //
- // Default is false, meaning CQ may re-use a successful build
- // triggered before current CQ attempt started.
- //
- // This option is typically used for builders which run depot_tools'
- // PRESUBMIT scripts, which are supposed to be quick to run and provide
- // additional OWNERS, lint, etc checks which are useful to run against
- // the latest revision of the CL's target branch.
- DisableReuse bool `protobuf:"varint,2,opt,name=disable_reuse,json=disableReuse,proto3" json:"disable_reuse,omitempty"`
- // Optional name of a builder (aka parent) which will trigger this builder
- // (aka child).
- //
- // If `triggered_by` is not specified (default), CQ will trigger this
- // builder directly.
- //
- // Else, CQ will wait for `triggered_by` (parent) builder to trigger
- // (possibly, indirectly) this (child) builder.
- // Conditions:
- // * `triggered_by` (parent) builder must set a special property
- // `triggered_build_ids` upon successful completion with value set
- // to a list of triggered Buildbucket build IDs,
- // corresponding to each triggered build. One or more of the IDs must
- // correspond to this (child) builder, which will then be waited for
- // by CQ.
- // * parent->child relationship graph must be a forest (set of a trees).
- // However, grandparent->parent->child triggering structure isn't well
- // tested. Please, talk to CQ maintainers to discuss your use case if you
- // actually need it.
- //
- // Failure/Retry semantics:
- // * If `triggered_by` (parent) builder succeeds, but doesn't set
- // the right `triggered_build_ids` s.t. CQ can't find this (child)
- // builder among triggered builds, then CQ will wait till
- // TRYJOB_PENDING_TIMEOUT is reached, currently hardcoded at 2 hours.
- // TODO(tandrii,sergiyb): improve this.
- // * If this (child) builder fails and CQ still has retry budget,
- // CQ will retry a parent builder.
- //
- // For example, given config:
- // builder { name: "*/m/mac_compiler" }
- // builder { name: "*/m/mac_tester_10.12"
- // triggered_by: "*/m/mac_compiler" }
- // builder { name: "*/m/mac_tester_10.13"
- // triggered_by: "*/m/mac_compiler" }
- // CQ will trigger and wait for "mac_compiler" to succeed. Then, it'll
- // check its `triggered_build_ids` and find which ones correspond to
- // "mac_tester_10.12" and "mac_tester_10.13" and wait for each to
- // complete. If say "mac_tester_10.12" fails, CQ will retry
- // "mac_compiler" and expect it to trigger new builds for
- // "mac_tester_10.12" and "mac_tester_10.13".
- TriggeredBy string `protobuf:"bytes,3,opt,name=triggered_by,json=triggeredBy,proto3" json:"triggered_by,omitempty"`
- // Optional. When this field is present, it marks given builder as
- // experimental. It is only triggered on a given percentage of the CLs and
- // the outcome does not affect the decicion whether a CL can land or not.
- // This is typically used to test new builders and estimate their capacity
- // requirements.
- ExperimentPercentage float32 `protobuf:"fixed32,4,opt,name=experiment_percentage,json=experimentPercentage,proto3" json:"experiment_percentage,omitempty"`
- // Optionally specified alternative builder for CQ to choose instead.
- // If provided, CQ will choose only one of the equivalent builders as
- // required based purely on given CL and CL's owner and **regardless** of
- // the possibly already completed try jobs.
- //
- // Note: none of the equivalent builders should be part of triggered_by
- // chain, although CQ may eventually relax this requirement.
- EquivalentTo *Verifiers_Tryjob_EquivalentBuilder `protobuf:"bytes,5,opt,name=equivalent_to,json=equivalentTo,proto3" json:"equivalent_to,omitempty"`
- // Optional. Require this builder only if location_regexp matches a file in
- // this CL.
- //
- // This means:
- // * If specified and no file in a CL matches any of the location_regexp,
- // then CQ will not care about this builder.
- // * If a file in a CL matches any location_regexp_exclude, then this file
- // won't be considered when matching location_regexp.
- //
- // If location_regexp is not specified (default), builder will be used
- // on all CLs.
- //
- // The location_regexp is matches are done against the following string:
- // <gerrit_url>/<gerrit_project_name>/+/<cl_file_path>
- // File path must be relative to root of the repo, and it uses Unix /
- // directory separators.
- //
- // The comparison is a full match; the pattern is implicitly anchored with
- // "^" and "$", so there is no need add them.
- //
- // Touching a file means either adding, modifying or removing it.
- //
- // These options currently can not be combined with the following other options:
- // * experiment_percentage
- // * triggered_by
- // * GerritCQAbility.allow_submit_with_open_deps
- // If you need to combine them, please talk to CQ owners.
- //
- // Examples:
- //
- // location_regexp:
- // "https://chromium-review.googlesource.com/chromium/src/[+]/third_party/WebKit/.+"
- // will enable builder for all CLs touching any file in
- // third_party/WebKit directory of the chromium/src repo, but not
- // directory itself.
- //
- // location_regexp: "https://example.com/repo/[+]/.+"
- // location_regexp_exclude: "https://example.com/repo/[+]/all/one.txt"
- // will match a CL which touches at least one file other than
- // 'one.txt' inside all/ directory of the Gerrit project "repo".
- //
- // location_regexp_exclude: "https://example.com/.+/[+]/one.txt"
- // will match a CL which touches at least one file other than
- // 'one.txt' in any repository OR belongs to any other Gerrit server.
- // Note, in this case location_regexp defaults to ".*".
- LocationRegexp []string `protobuf:"bytes,6,rep,name=location_regexp,json=locationRegexp,proto3" json:"location_regexp,omitempty"`
- LocationRegexpExclude []string `protobuf:"bytes,7,rep,name=location_regexp_exclude,json=locationRegexpExclude,proto3" json:"location_regexp_exclude,omitempty"`
- // If set, this builder will only be triggered if the CL owner (who first
- // uploaded the CL) is a member of at least one of these groups.
- OwnerWhitelistGroup []string `protobuf:"bytes,8,rep,name=owner_whitelist_group,json=ownerWhitelistGroup,proto3" json:"owner_whitelist_group,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *Verifiers_Tryjob_Builder) Reset() { *m = Verifiers_Tryjob_Builder{} }
-func (m *Verifiers_Tryjob_Builder) String() string { return proto.CompactTextString(m) }
-func (*Verifiers_Tryjob_Builder) ProtoMessage() {}
-func (*Verifiers_Tryjob_Builder) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{4, 2, 0}
-}
-
-func (m *Verifiers_Tryjob_Builder) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Verifiers_Tryjob_Builder.Unmarshal(m, b)
-}
-func (m *Verifiers_Tryjob_Builder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Verifiers_Tryjob_Builder.Marshal(b, m, deterministic)
-}
-func (m *Verifiers_Tryjob_Builder) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Verifiers_Tryjob_Builder.Merge(m, src)
-}
-func (m *Verifiers_Tryjob_Builder) XXX_Size() int {
- return xxx_messageInfo_Verifiers_Tryjob_Builder.Size(m)
-}
-func (m *Verifiers_Tryjob_Builder) XXX_DiscardUnknown() {
- xxx_messageInfo_Verifiers_Tryjob_Builder.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Verifiers_Tryjob_Builder proto.InternalMessageInfo
-
-func (m *Verifiers_Tryjob_Builder) GetName() string {
- if m != nil {
- return m.Name
- }
- return ""
-}
-
-func (m *Verifiers_Tryjob_Builder) GetDisableReuse() bool {
- if m != nil {
- return m.DisableReuse
- }
- return false
-}
-
-func (m *Verifiers_Tryjob_Builder) GetTriggeredBy() string {
- if m != nil {
- return m.TriggeredBy
- }
- return ""
-}
-
-func (m *Verifiers_Tryjob_Builder) GetExperimentPercentage() float32 {
- if m != nil {
- return m.ExperimentPercentage
- }
- return 0
-}
-
-func (m *Verifiers_Tryjob_Builder) GetEquivalentTo() *Verifiers_Tryjob_EquivalentBuilder {
- if m != nil {
- return m.EquivalentTo
- }
- return nil
-}
-
-func (m *Verifiers_Tryjob_Builder) GetLocationRegexp() []string {
- if m != nil {
- return m.LocationRegexp
- }
- return nil
-}
-
-func (m *Verifiers_Tryjob_Builder) GetLocationRegexpExclude() []string {
- if m != nil {
- return m.LocationRegexpExclude
- }
- return nil
-}
-
-func (m *Verifiers_Tryjob_Builder) GetOwnerWhitelistGroup() []string {
- if m != nil {
- return m.OwnerWhitelistGroup
- }
- return nil
-}
-
-type Verifiers_Tryjob_EquivalentBuilder struct {
- // Required. Name of this builder.
- // Format is the same in the same format as Builder.name.
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- // Percentage expressing probability of CQ triggering this builder instead
- // of the builder to which this builder is equilvanet to.
- //
- // A choice itself is made deterministicly based on CL alone, hereby
- // all CQ attempts on all patchsets of a given CL will trigger the same
- // builder, assuming CQ config doesn't change in the mean time.
- //
- // Note that if `owner_whitelist_group` is also specified, the choice over
- // which of the two builders to trigger will be made only for CLs owned by
- // whitelisted group.
- //
- // If not specified, defaults to 0, meaning this builder is never
- // triggered by CQ, but an existing build can be re-used by CQ.
- //
- // To illustrate, suppose percentage=10. Then,
- // Without owner_whitelist_group,
- // ~10% of all CQ attempts will trigger this builder.
- // With owner_whitelist_group set and, suppose, 1/5 of CQ attempts are
- // ran on CLs owned by this group, then only ~(1/10)*(1/5) or
- // ~2% of all CQ attempts will trigger this builder.
- Percentage float32 `protobuf:"fixed32,2,opt,name=percentage,proto3" json:"percentage,omitempty"`
- // If specified, limits the builder to CL owners in this group.
- OwnerWhitelistGroup string `protobuf:"bytes,3,opt,name=owner_whitelist_group,json=ownerWhitelistGroup,proto3" json:"owner_whitelist_group,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *Verifiers_Tryjob_EquivalentBuilder) Reset() { *m = Verifiers_Tryjob_EquivalentBuilder{} }
-func (m *Verifiers_Tryjob_EquivalentBuilder) String() string { return proto.CompactTextString(m) }
-func (*Verifiers_Tryjob_EquivalentBuilder) ProtoMessage() {}
-func (*Verifiers_Tryjob_EquivalentBuilder) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{4, 2, 1}
-}
-
-func (m *Verifiers_Tryjob_EquivalentBuilder) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Verifiers_Tryjob_EquivalentBuilder.Unmarshal(m, b)
-}
-func (m *Verifiers_Tryjob_EquivalentBuilder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Verifiers_Tryjob_EquivalentBuilder.Marshal(b, m, deterministic)
-}
-func (m *Verifiers_Tryjob_EquivalentBuilder) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Verifiers_Tryjob_EquivalentBuilder.Merge(m, src)
-}
-func (m *Verifiers_Tryjob_EquivalentBuilder) XXX_Size() int {
- return xxx_messageInfo_Verifiers_Tryjob_EquivalentBuilder.Size(m)
-}
-func (m *Verifiers_Tryjob_EquivalentBuilder) XXX_DiscardUnknown() {
- xxx_messageInfo_Verifiers_Tryjob_EquivalentBuilder.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Verifiers_Tryjob_EquivalentBuilder proto.InternalMessageInfo
-
-func (m *Verifiers_Tryjob_EquivalentBuilder) GetName() string {
- if m != nil {
- return m.Name
- }
- return ""
-}
-
-func (m *Verifiers_Tryjob_EquivalentBuilder) GetPercentage() float32 {
- if m != nil {
- return m.Percentage
- }
- return 0
-}
-
-func (m *Verifiers_Tryjob_EquivalentBuilder) GetOwnerWhitelistGroup() string {
- if m != nil {
- return m.OwnerWhitelistGroup
- }
- return ""
-}
-
-// Collection of parameters for deciding whether to retry a single build.
-// If parameter is not specified, its value defaults to 0 (per proto3).
-// Thus, omitting all parameters means no retries of any kind.
-type Verifiers_Tryjob_RetryConfig struct {
- // Retry quota for a single tryjob.
- SingleQuota int32 `protobuf:"varint,1,opt,name=single_quota,json=singleQuota,proto3" json:"single_quota,omitempty"`
- // Retry quota for all tryjobs in a CL.
- GlobalQuota int32 `protobuf:"varint,2,opt,name=global_quota,json=globalQuota,proto3" json:"global_quota,omitempty"`
- // The weight assigned to each tryjob failure.
- FailureWeight int32 `protobuf:"varint,3,opt,name=failure_weight,json=failureWeight,proto3" json:"failure_weight,omitempty"`
- // The weight assigned to each transient failure.
- TransientFailureWeight int32 `protobuf:"varint,4,opt,name=transient_failure_weight,json=transientFailureWeight,proto3" json:"transient_failure_weight,omitempty"`
- // The weight assigned to tryjob timeouts.
- TimeoutWeight int32 `protobuf:"varint,5,opt,name=timeout_weight,json=timeoutWeight,proto3" json:"timeout_weight,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *Verifiers_Tryjob_RetryConfig) Reset() { *m = Verifiers_Tryjob_RetryConfig{} }
-func (m *Verifiers_Tryjob_RetryConfig) String() string { return proto.CompactTextString(m) }
-func (*Verifiers_Tryjob_RetryConfig) ProtoMessage() {}
-func (*Verifiers_Tryjob_RetryConfig) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{4, 2, 2}
-}
-
-func (m *Verifiers_Tryjob_RetryConfig) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Verifiers_Tryjob_RetryConfig.Unmarshal(m, b)
-}
-func (m *Verifiers_Tryjob_RetryConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Verifiers_Tryjob_RetryConfig.Marshal(b, m, deterministic)
-}
-func (m *Verifiers_Tryjob_RetryConfig) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Verifiers_Tryjob_RetryConfig.Merge(m, src)
-}
-func (m *Verifiers_Tryjob_RetryConfig) XXX_Size() int {
- return xxx_messageInfo_Verifiers_Tryjob_RetryConfig.Size(m)
-}
-func (m *Verifiers_Tryjob_RetryConfig) XXX_DiscardUnknown() {
- xxx_messageInfo_Verifiers_Tryjob_RetryConfig.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Verifiers_Tryjob_RetryConfig proto.InternalMessageInfo
-
-func (m *Verifiers_Tryjob_RetryConfig) GetSingleQuota() int32 {
- if m != nil {
- return m.SingleQuota
- }
- return 0
-}
-
-func (m *Verifiers_Tryjob_RetryConfig) GetGlobalQuota() int32 {
- if m != nil {
- return m.GlobalQuota
- }
- return 0
-}
-
-func (m *Verifiers_Tryjob_RetryConfig) GetFailureWeight() int32 {
- if m != nil {
- return m.FailureWeight
- }
- return 0
-}
-
-func (m *Verifiers_Tryjob_RetryConfig) GetTransientFailureWeight() int32 {
- if m != nil {
- return m.TransientFailureWeight
- }
- return 0
-}
-
-func (m *Verifiers_Tryjob_RetryConfig) GetTimeoutWeight() int32 {
- if m != nil {
- return m.TimeoutWeight
- }
- return 0
-}
-
-// CQLinter is for internal use in CQ.
-type Verifiers_CQLinter struct {
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *Verifiers_CQLinter) Reset() { *m = Verifiers_CQLinter{} }
-func (m *Verifiers_CQLinter) String() string { return proto.CompactTextString(m) }
-func (*Verifiers_CQLinter) ProtoMessage() {}
-func (*Verifiers_CQLinter) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{4, 3}
-}
-
-func (m *Verifiers_CQLinter) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Verifiers_CQLinter.Unmarshal(m, b)
-}
-func (m *Verifiers_CQLinter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Verifiers_CQLinter.Marshal(b, m, deterministic)
-}
-func (m *Verifiers_CQLinter) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Verifiers_CQLinter.Merge(m, src)
-}
-func (m *Verifiers_CQLinter) XXX_Size() int {
- return xxx_messageInfo_Verifiers_CQLinter.Size(m)
-}
-func (m *Verifiers_CQLinter) XXX_DiscardUnknown() {
- xxx_messageInfo_Verifiers_CQLinter.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Verifiers_CQLinter proto.InternalMessageInfo
-
-// Fake is for internal use in CQ.
-type Verifiers_Fake struct {
- Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
- EventualState string `protobuf:"bytes,2,opt,name=eventual_state,json=eventualState,proto3" json:"eventual_state,omitempty"`
- Delay int32 `protobuf:"varint,3,opt,name=delay,proto3" json:"delay,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *Verifiers_Fake) Reset() { *m = Verifiers_Fake{} }
-func (m *Verifiers_Fake) String() string { return proto.CompactTextString(m) }
-func (*Verifiers_Fake) ProtoMessage() {}
-func (*Verifiers_Fake) Descriptor() ([]byte, []int) {
- return fileDescriptor_59a2f489dbd601ec, []int{4, 4}
-}
-
-func (m *Verifiers_Fake) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Verifiers_Fake.Unmarshal(m, b)
-}
-func (m *Verifiers_Fake) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Verifiers_Fake.Marshal(b, m, deterministic)
-}
-func (m *Verifiers_Fake) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Verifiers_Fake.Merge(m, src)
-}
-func (m *Verifiers_Fake) XXX_Size() int {
- return xxx_messageInfo_Verifiers_Fake.Size(m)
-}
-func (m *Verifiers_Fake) XXX_DiscardUnknown() {
- xxx_messageInfo_Verifiers_Fake.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Verifiers_Fake proto.InternalMessageInfo
-
-func (m *Verifiers_Fake) GetName() string {
- if m != nil {
- return m.Name
- }
- return ""
-}
-
-func (m *Verifiers_Fake) GetEventualState() string {
- if m != nil {
- return m.EventualState
- }
- return ""
-}
-
-func (m *Verifiers_Fake) GetDelay() int32 {
- if m != nil {
- return m.Delay
- }
- return 0
-}
-
-func init() {
- proto.RegisterEnum("cq.config.Toggle", Toggle_name, Toggle_value)
- proto.RegisterEnum("cq.config.Verifiers_GerritCQAbility_CQAction", Verifiers_GerritCQAbility_CQAction_name, Verifiers_GerritCQAbility_CQAction_value)
- proto.RegisterType((*Config)(nil), "cq.config.Config")
- proto.RegisterType((*SubmitOptions)(nil), "cq.config.SubmitOptions")
- proto.RegisterType((*ConfigGroup)(nil), "cq.config.ConfigGroup")
- proto.RegisterType((*ConfigGroup_Gerrit)(nil), "cq.config.ConfigGroup.Gerrit")
- proto.RegisterType((*ConfigGroup_Gerrit_Project)(nil), "cq.config.ConfigGroup.Gerrit.Project")
- proto.RegisterType((*ConfigGroup_Gerrit_Project_CrOSMigration)(nil), "cq.config.ConfigGroup.Gerrit.Project.CrOSMigration")
- proto.RegisterType((*CombineCLs)(nil), "cq.config.CombineCLs")
- proto.RegisterType((*Verifiers)(nil), "cq.config.Verifiers")
- proto.RegisterType((*Verifiers_GerritCQAbility)(nil), "cq.config.Verifiers.GerritCQAbility")
- proto.RegisterType((*Verifiers_TreeStatus)(nil), "cq.config.Verifiers.TreeStatus")
- proto.RegisterType((*Verifiers_Tryjob)(nil), "cq.config.Verifiers.Tryjob")
- proto.RegisterType((*Verifiers_Tryjob_Builder)(nil), "cq.config.Verifiers.Tryjob.Builder")
- proto.RegisterType((*Verifiers_Tryjob_EquivalentBuilder)(nil), "cq.config.Verifiers.Tryjob.EquivalentBuilder")
- proto.RegisterType((*Verifiers_Tryjob_RetryConfig)(nil), "cq.config.Verifiers.Tryjob.RetryConfig")
- proto.RegisterType((*Verifiers_CQLinter)(nil), "cq.config.Verifiers.CQLinter")
- proto.RegisterType((*Verifiers_Fake)(nil), "cq.config.Verifiers.Fake")
-}
-
-func init() {
- proto.RegisterFile("go.chromium.org/luci/cq/api/config/v2/cq.proto", fileDescriptor_59a2f489dbd601ec)
-}
-
-var fileDescriptor_59a2f489dbd601ec = []byte{
- // 1336 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xcf, 0x72, 0x13, 0xc7,
- 0x13, 0xfe, 0x49, 0x96, 0x65, 0xa9, 0x65, 0x09, 0x79, 0xb0, 0x41, 0x3f, 0x51, 0x10, 0xc7, 0xe0,
- 0xc2, 0x95, 0x8a, 0x57, 0x55, 0x72, 0x85, 0x22, 0x21, 0x55, 0xc4, 0x96, 0x0d, 0x81, 0x02, 0x8c,
- 0x47, 0x26, 0x0e, 0x5c, 0xa6, 0x56, 0xab, 0xd1, 0x6a, 0x60, 0xb5, 0x23, 0xcd, 0xcc, 0xda, 0x56,
- 0x72, 0xcc, 0x5b, 0xe4, 0x9e, 0x17, 0xc8, 0x35, 0xa7, 0x1c, 0xf2, 0x02, 0xb9, 0xe6, 0x65, 0x52,
- 0xf3, 0x47, 0x2b, 0x19, 0x84, 0xc3, 0x6d, 0xa7, 0xfb, 0xfb, 0x7a, 0x7a, 0xba, 0x7b, 0xbe, 0x1d,
- 0xf0, 0x42, 0xee, 0x05, 0x7d, 0xc1, 0x07, 0x2c, 0x19, 0x78, 0x5c, 0x84, 0x8d, 0x28, 0x09, 0x58,
- 0x23, 0x18, 0x35, 0xfc, 0x21, 0x6b, 0x04, 0x3c, 0xee, 0xb1, 0xb0, 0x71, 0xda, 0x6c, 0x04, 0x23,
- 0x6f, 0x28, 0xb8, 0xe2, 0xa8, 0x18, 0x8c, 0x3c, 0x6b, 0xae, 0xdf, 0x0a, 0x39, 0x0f, 0x23, 0xda,
- 0x30, 0x8e, 0x4e, 0xd2, 0x6b, 0x74, 0x13, 0xe1, 0x2b, 0xc6, 0x63, 0x0b, 0xdd, 0xf8, 0x2d, 0x0b,
- 0xf9, 0x96, 0x81, 0x22, 0x0f, 0xae, 0x76, 0x85, 0xcf, 0x62, 0x16, 0x87, 0x44, 0x2a, 0x5f, 0x28,
- 0xa2, 0xd8, 0x80, 0xd6, 0x32, 0xeb, 0x99, 0xad, 0x22, 0x5e, 0x99, 0xb8, 0xda, 0xda, 0x73, 0xcc,
- 0x06, 0x14, 0xdd, 0x81, 0x4a, 0x30, 0xd2, 0x48, 0x95, 0x48, 0xd2, 0xe7, 0x52, 0xd5, 0xb2, 0x06,
- 0xba, 0x1c, 0x8c, 0xda, 0xc6, 0xf8, 0x3d, 0x97, 0x0a, 0x3d, 0x84, 0x8a, 0x4c, 0x3a, 0x03, 0xa6,
- 0x08, 0x1f, 0xea, 0x7d, 0x65, 0x6d, 0x61, 0x3d, 0xb3, 0x55, 0x6a, 0xd6, 0xbc, 0x34, 0x49, 0xaf,
- 0x6d, 0x00, 0x87, 0xd6, 0x8f, 0xcb, 0x72, 0x76, 0x89, 0x1e, 0x40, 0xd9, 0xc2, 0x48, 0x28, 0x78,
- 0x32, 0x94, 0xb5, 0xdc, 0xfa, 0xc2, 0x56, 0xa9, 0x79, 0x6d, 0x86, 0x6f, 0x0f, 0xf0, 0x58, 0xbb,
- 0xf1, 0x72, 0x30, 0x5d, 0x48, 0xf4, 0x18, 0xae, 0x0d, 0x05, 0x7f, 0x4b, 0x03, 0x45, 0x64, 0xc0,
- 0x87, 0xb4, 0x4b, 0xfc, 0x20, 0xe0, 0x49, 0xac, 0x6a, 0x8b, 0xeb, 0x99, 0xad, 0x4a, 0x73, 0x65,
- 0x26, 0xca, 0x31, 0x0f, 0xc3, 0x88, 0xe2, 0x55, 0x47, 0x68, 0x1b, 0xfc, 0xae, 0x85, 0x6f, 0xf4,
- 0xa1, 0x7c, 0x21, 0x4b, 0x74, 0x03, 0x8a, 0x03, 0xff, 0x9c, 0x74, 0x12, 0x21, 0x95, 0xa9, 0xd1,
- 0x22, 0x2e, 0x0c, 0xfc, 0xf3, 0x3d, 0xbd, 0x46, 0xdf, 0x40, 0xc9, 0x38, 0x48, 0x97, 0x46, 0xfe,
- 0xd8, 0xd4, 0xa5, 0xd4, 0xfc, 0xbf, 0x67, 0x7b, 0xe1, 0x4d, 0x7a, 0xe1, 0xed, 0xbb, 0x5e, 0x60,
- 0x30, 0xe8, 0x7d, 0x0d, 0xde, 0xf8, 0x35, 0x07, 0xa5, 0x99, 0x03, 0xa1, 0xaf, 0x20, 0x1f, 0x52,
- 0x21, 0x98, 0xde, 0x45, 0x1f, 0xfc, 0xe6, 0xfc, 0x83, 0x7b, 0x8f, 0x0d, 0x08, 0x3b, 0x30, 0xba,
- 0x07, 0xa5, 0x80, 0x0f, 0x3a, 0x2c, 0xa6, 0x24, 0x88, 0x74, 0xd1, 0x74, 0x0a, 0x6b, 0x17, 0xb8,
- 0xc6, 0xdb, 0x7a, 0x26, 0x31, 0x38, 0x64, 0x2b, 0x92, 0xa8, 0x09, 0xc5, 0x53, 0x2a, 0x58, 0x8f,
- 0x51, 0x21, 0x5d, 0xe2, 0xab, 0x33, 0xac, 0x1f, 0x26, 0x3e, 0x3c, 0x85, 0xa1, 0x6d, 0x28, 0xf4,
- 0xfc, 0x28, 0xea, 0xf8, 0xc1, 0xbb, 0x8f, 0xd7, 0x35, 0x85, 0xd4, 0x7f, 0xcf, 0x42, 0xde, 0x66,
- 0x8b, 0xaa, 0xb0, 0x90, 0x88, 0xc8, 0xcd, 0x98, 0xfe, 0x44, 0xbb, 0x50, 0x70, 0x0d, 0xd0, 0xdb,
- 0xeb, 0x03, 0x6f, 0x5e, 0x7a, 0x60, 0xef, 0xa5, 0x45, 0xe3, 0x94, 0x56, 0xff, 0x3b, 0x03, 0x4b,
- 0xce, 0x8a, 0x10, 0xe4, 0x62, 0x3f, 0x9d, 0x62, 0xf3, 0x8d, 0x6e, 0x02, 0x08, 0xda, 0x23, 0x82,
- 0x86, 0xf4, 0x7c, 0x68, 0x36, 0x29, 0xe2, 0xa2, 0xa0, 0x3d, 0x6c, 0x0c, 0xe8, 0x0d, 0x54, 0x02,
- 0xc1, 0x25, 0x19, 0xb0, 0xd0, 0xb6, 0xc7, 0x4d, 0xec, 0xce, 0x27, 0xe5, 0xe1, 0xb5, 0xc4, 0x61,
- 0xfb, 0xf9, 0x84, 0x8a, 0xcb, 0x3a, 0x54, 0xba, 0xac, 0xdf, 0x87, 0xf2, 0x05, 0x3f, 0xba, 0x0b,
- 0x57, 0xf4, 0x65, 0x26, 0x43, 0x2a, 0x02, 0x1a, 0x2b, 0x3f, 0xb4, 0xa9, 0x66, 0x71, 0x45, 0x9b,
- 0x5f, 0xa6, 0xd6, 0xa7, 0xb9, 0xc2, 0x42, 0x35, 0xb7, 0xf1, 0x23, 0xc0, 0xb4, 0x6f, 0xe8, 0x29,
- 0x5c, 0x95, 0xca, 0xef, 0xb0, 0x88, 0xfd, 0x64, 0xa2, 0xb9, 0x71, 0xcb, 0xfc, 0xd7, 0xb8, 0xa1,
- 0x0b, 0x2c, 0x3b, 0x76, 0x7f, 0x95, 0xa1, 0x98, 0x36, 0x17, 0xbd, 0x84, 0x15, 0x3b, 0x47, 0x24,
- 0x18, 0x11, 0x83, 0x55, 0x93, 0xb8, 0x77, 0xe6, 0x4d, 0x83, 0x2b, 0x42, 0xeb, 0x68, 0xd7, 0x62,
- 0xf1, 0x15, 0x4b, 0x6f, 0x8d, 0x9c, 0x01, 0x7d, 0x07, 0x25, 0x25, 0x28, 0x75, 0x7a, 0xe1, 0x26,
- 0xeb, 0xb3, 0xb9, 0xb1, 0x8e, 0x05, 0xa5, 0x56, 0x41, 0x30, 0xa8, 0xf4, 0x1b, 0xed, 0x40, 0x5e,
- 0x89, 0xf1, 0x5b, 0xde, 0x71, 0xfd, 0xb8, 0xf1, 0x11, 0xb2, 0x86, 0x60, 0x07, 0x45, 0x5f, 0x43,
- 0x21, 0x18, 0x45, 0x2c, 0x56, 0x54, 0xb8, 0x3b, 0x70, 0x73, 0x2e, 0xad, 0x75, 0xf4, 0xcc, 0x80,
- 0x70, 0x0a, 0x47, 0xdb, 0x90, 0xeb, 0xf9, 0xef, 0xa8, 0x99, 0x68, 0x5d, 0xce, 0x79, 0xb4, 0x47,
- 0xfe, 0x3b, 0x8a, 0x0d, 0xac, 0xfe, 0x67, 0x16, 0xae, 0xbc, 0x57, 0x05, 0xb4, 0x09, 0x95, 0x80,
- 0x0f, 0x06, 0x4c, 0x29, 0x2a, 0x48, 0xc4, 0xa4, 0xbd, 0xc3, 0x45, 0x5c, 0x4e, 0xad, 0xcf, 0x98,
- 0x54, 0x68, 0x5b, 0x2b, 0xef, 0x98, 0x88, 0x24, 0xd6, 0xf2, 0x44, 0xa5, 0xb4, 0x58, 0x3b, 0x99,
- 0xd5, 0xae, 0x18, 0xe3, 0x24, 0xde, 0x35, 0x0e, 0x03, 0xff, 0x16, 0x6e, 0xf8, 0x51, 0xc4, 0xcf,
- 0x88, 0x13, 0xd6, 0x33, 0xa6, 0xfa, 0x84, 0x0f, 0xa9, 0xee, 0xff, 0xd0, 0xea, 0x6b, 0x01, 0x5f,
- 0x37, 0x10, 0xab, 0x59, 0x27, 0x4c, 0xf5, 0x0f, 0x87, 0x34, 0xde, 0xa7, 0x43, 0x89, 0xde, 0x42,
- 0xdd, 0xb2, 0xf9, 0x59, 0x4c, 0x05, 0x61, 0x3d, 0x17, 0x46, 0xf9, 0x9d, 0x88, 0x9a, 0x1a, 0x55,
- 0x9a, 0xdb, 0x9f, 0xd2, 0x63, 0xaf, 0x75, 0xb4, 0x1b, 0x98, 0x79, 0xb2, 0x7b, 0x1d, 0xea, 0x78,
- 0x4f, 0x7a, 0xed, 0x69, 0xb4, 0x0d, 0x0f, 0x0a, 0x13, 0x10, 0x2a, 0xc2, 0xe2, 0xab, 0x17, 0xed,
- 0x83, 0xe3, 0xea, 0xff, 0x50, 0x09, 0x96, 0xf6, 0xf1, 0x6b, 0x82, 0x5f, 0xbd, 0xa8, 0x66, 0x10,
- 0x40, 0xbe, 0x75, 0xf8, 0xfc, 0xf9, 0x93, 0xe3, 0x6a, 0xb6, 0x7e, 0x0b, 0x60, 0xda, 0xfc, 0x0f,
- 0xc5, 0xa1, 0xfe, 0xc7, 0x12, 0xe4, 0x6d, 0x83, 0xd1, 0x43, 0x28, 0x74, 0x12, 0x16, 0x75, 0xb5,
- 0x4c, 0x59, 0x61, 0xbc, 0x7d, 0xc9, 0x3c, 0x78, 0x7b, 0x16, 0x8b, 0x53, 0x12, 0x7a, 0x0a, 0xcb,
- 0x82, 0x2a, 0x31, 0x26, 0x96, 0xe2, 0x26, 0xf2, 0xee, 0x65, 0x41, 0xb0, 0xc6, 0xdb, 0xab, 0x8f,
- 0x4b, 0x62, 0xba, 0x40, 0x2d, 0x58, 0x0d, 0xfc, 0x38, 0xa0, 0x91, 0x1e, 0xef, 0x88, 0x12, 0x3b,
- 0x7c, 0xb6, 0x15, 0x73, 0xc5, 0x10, 0x59, 0x78, 0x5b, 0xa3, 0x6d, 0x70, 0x59, 0xff, 0x65, 0x01,
- 0x96, 0x5c, 0x9a, 0x73, 0x65, 0xeb, 0x36, 0x94, 0xbb, 0x4c, 0xea, 0xba, 0x12, 0x41, 0x13, 0x49,
- 0x4d, 0xc6, 0x05, 0xbc, 0xec, 0x8c, 0x58, 0xdb, 0xd0, 0xe7, 0xb0, 0xac, 0x04, 0x0b, 0x43, 0x2a,
- 0x68, 0x97, 0x74, 0xc6, 0x26, 0x83, 0x22, 0x2e, 0xa5, 0xb6, 0xbd, 0x31, 0xda, 0x81, 0x35, 0x7a,
- 0x3e, 0xa4, 0x82, 0x0d, 0x68, 0xac, 0x66, 0x85, 0x27, 0x67, 0x84, 0x67, 0x75, 0xea, 0x9c, 0xca,
- 0x0f, 0xc2, 0x50, 0xa6, 0xa3, 0x84, 0x9d, 0xfa, 0x91, 0x26, 0x29, 0xee, 0x6e, 0xc5, 0xf6, 0x65,
- 0xe5, 0x3a, 0x48, 0x09, 0x93, 0xea, 0x2f, 0x4f, 0x63, 0x1c, 0x73, 0xa3, 0x7d, 0x3c, 0xb0, 0xca,
- 0xe5, 0xc4, 0x38, 0x6f, 0x46, 0xbe, 0x32, 0x31, 0x3b, 0x45, 0xbe, 0x07, 0xd7, 0xdf, 0x03, 0x12,
- 0x7a, 0x1e, 0x44, 0x49, 0x97, 0xd6, 0x96, 0x0c, 0x61, 0xed, 0x22, 0xe1, 0xc0, 0x3a, 0x51, 0x13,
- 0xd6, 0xec, 0x90, 0x9f, 0xf5, 0x99, 0xa2, 0xfa, 0x4e, 0xd9, 0x37, 0x44, 0xad, 0x60, 0x58, 0x57,
- 0x8d, 0xf3, 0x64, 0xe2, 0x33, 0x6a, 0x5e, 0xff, 0x19, 0x56, 0x3e, 0xc8, 0x7b, 0x6e, 0x3b, 0x6e,
- 0x01, 0xcc, 0xd4, 0x2e, 0x6b, 0x6a, 0x37, 0x63, 0xf9, 0xf8, 0xe6, 0xb6, 0x25, 0x73, 0x37, 0xff,
- 0x27, 0x03, 0xa5, 0x99, 0x21, 0xd3, 0xdd, 0x94, 0x2c, 0x0e, 0x23, 0x4a, 0x46, 0x09, 0x57, 0xbe,
- 0x7b, 0x67, 0x94, 0xac, 0xed, 0x48, 0x9b, 0x34, 0x24, 0x8c, 0x78, 0xc7, 0x8f, 0x1c, 0x24, 0x6b,
- 0x21, 0xd6, 0x66, 0x21, 0x9b, 0x50, 0xe9, 0xf9, 0x2c, 0x4a, 0x04, 0x25, 0x67, 0x94, 0x85, 0x7d,
- 0x65, 0x52, 0x58, 0xc4, 0x65, 0x67, 0x3d, 0x31, 0x46, 0x74, 0x1f, 0x6a, 0x4a, 0xf8, 0xb1, 0x64,
- 0xba, 0xc3, 0xef, 0x11, 0x72, 0x86, 0x70, 0x2d, 0xf5, 0x3f, 0xba, 0xc0, 0xdc, 0x84, 0x8a, 0x7e,
- 0x2a, 0xf2, 0x44, 0x4d, 0xf0, 0x8b, 0x76, 0x03, 0x67, 0xb5, 0xb0, 0x3a, 0x68, 0x35, 0xb0, 0x32,
- 0x5b, 0x3f, 0x81, 0x9c, 0xd6, 0xce, 0xb9, 0x95, 0xdd, 0x84, 0x0a, 0x3d, 0xa5, 0xb1, 0x4a, 0x7c,
- 0x73, 0x9f, 0x14, 0x75, 0x0f, 0xcb, 0xf2, 0xc4, 0xaa, 0xf5, 0x81, 0xa2, 0x55, 0x58, 0xb4, 0xff,
- 0x3b, 0x7b, 0x1a, 0xbb, 0xf8, 0xe2, 0x0e, 0xe4, 0xed, 0x1d, 0x9b, 0x15, 0x9c, 0x25, 0x58, 0x78,
- 0x7d, 0xd0, 0xae, 0x66, 0x50, 0x1e, 0xb2, 0x2f, 0x0e, 0xab, 0xd9, 0x3d, 0xef, 0xcd, 0x97, 0x9f,
- 0xf4, 0xa6, 0x7e, 0x60, 0xbf, 0x3a, 0x79, 0xf3, 0x13, 0xdd, 0xf9, 0x37, 0x00, 0x00, 0xff, 0xff,
- 0x73, 0x7d, 0x69, 0xa3, 0x8a, 0x0b, 0x00, 0x00,
-}
diff --git a/recipe_proto/go.chromium.org/luci/cq/api/config/v2/cq.proto b/recipe_proto/go.chromium.org/luci/cq/api/config/v2/cq.proto
index 0278300..ebd5c99 100644
--- a/recipe_proto/go.chromium.org/luci/cq/api/config/v2/cq.proto
+++ b/recipe_proto/go.chromium.org/luci/cq/api/config/v2/cq.proto
@@ -20,21 +20,31 @@
import "google/protobuf/duration.proto";
-// This message describes a Commit Queue configuration.
+/* TODO(fxb/46095): Figure out why the copy in
+ * https://chromium.googlesource.com/infra/luci/recipes-py.git/+/master/recipe_proto/
+ * is not used
+import "go.chromium.org/luci/common/proto/options.proto";
+
+option (luci.file_metadata) = {
+ doc_url: "https://luci-config.appspot.com/schemas/projects:commit-queue.cfg";
+};
+*/
+
+// This message describes a CQ configuration.
//
-// The config file commit-queue.cfg should be stored in the config directory of your
-// project, alongside cr-buildbucket.cfg.
+// The config file commit-queue.cfg should be stored in the config directory of
+// your project, alongside cr-buildbucket.cfg.
message Config {
// Optional. If present, the CQ will refrain from processing any CLs,
// on which CQ was triggered after the specified time.
//
// This is an UTC RFC3339 (stiptime(tm)) string representing the time.
- // For example, "2017-12-23T15:47:58Z" and Z is required.
+ // For example, "2017-12-23T15:47:58Z", where Z is required.
string draining_start_time = 1;
// Optional and deprecated.
// URL of the CQ status app to push updates to.
- string cq_status_host = 2;
+ string cq_status_host = 2 [deprecated = true];
// Optional options for how CLs should be submitted.
SubmitOptions submit_options = 3;
@@ -42,11 +52,8 @@
// At least 1 ConfigGroup is required.
repeated ConfigGroup config_groups = 4;
- // Toggles the use of project scoped account for Gerrit access.
- // UNSET = Disabled, subject to change in the future.
- // NO = Disabled.
- // YES = Enabled.
- Toggle project_scoped_account = 5;
+ // DO NOT USE.
+ Toggle project_scoped_account = 5 [deprecated = true];
}
// SubmitOptions control how CQ submits CLs.
@@ -68,7 +75,7 @@
}
-// A boolean with an undefined value.
+// A boolean with an "unset" default value.
enum Toggle {
UNSET = 0;
YES = 1;
@@ -76,11 +83,32 @@
}
+// Determines how visible the results of a build for this builder are in Gerrit
+// comments.
+//
+// This doesn't affect the buildbucket plugin (green/red chips).
+enum CommentLevel {
+ // Currently default to full visibility.
+ COMMENT_LEVEL_UNSET = 0;
+ // The CQ reports the summary markdown and a link to the buildbucket build id
+ // in Milo with the builder name in the URL in a Gerrit comment.
+ COMMENT_LEVEL_FULL = 1;
+ // The CQ reports a generic "Build failed: https://ci.chromium.org/b/1234"
+ // with no summary markdown.
+ COMMENT_LEVEL_RESTRICTED = 2;
+}
+
+
// ConfigGroup allows one to share single verifiers config across a set of
// Gerrit repositories, which may be in different Gerrit installations.
message ConfigGroup {
reserved 3; // allow_cq_depend.
+ // The human- and machine-readable name (unique within this project) of this
+ // config group. This is used in messages posted to users and in monitoring
+ // data.
+ string name = 6;
+
// Enumerates repositories on a Gerrit instance for which CQ should work.
message Gerrit {
// Gerrit URL, e.g., https://chromium-review.googlesource.com.
@@ -121,18 +149,6 @@
// that every typical Git branch to be CQ-able, including
// "refs/heads/experimental/foobar".
repeated string ref_regexp = 2;
-
- // DO NOT USE. TODO(crbug/965615, tandrii): delete this.
- // HACK(cbrug/965615). Only for CrOS during LUCI CQ migration.
- message CrOSMigration {
- // % of new CQ attempts which LUCI CQ will process itself.
- // The rest will be delegated to legacy CrOS CQ.
- // If not set, implies 0%, ie all CLs are delegated.
- // To set these per ref_regexp of a single repo, duplicate project{}
- // block for this repo but with diff regexp.
- float luci_percentage = 1;
- }
- CrOSMigration cros_migration = 3;
}
}
@@ -145,6 +161,9 @@
// Typical use-case is testing & submitting changes to multiple repos at the
// same time, in which case all such repos must be declared up-front in
// `Gerrit` part of this config_group.
+ //
+ // Not allowed to be used together with
+ // submit_options.allow_submit_with_open_deps=true.
CombineCLs combine_cls = 4;
// Defines how to verify a CL before submitting it. Required.
@@ -309,8 +328,14 @@
string url = 1;
}
+ // Tryjob configures builders which CQ may trigger and/or use to verify CL(s).
message Tryjob {
+ // Next field number: 4
+
// Builders on which tryjobs should be triggered.
+ //
+ // CQ won't allow adding any builder via `CQ-Include-Trybots:` in CL
+ // description except those in this list.
repeated Builder builders = 1;
// Optional, defaulting to no retries whatsoever.
@@ -322,7 +347,7 @@
Toggle cancel_stale_tryjobs = 3;
message Builder {
- // Next field number: 9
+ // Next field number: 11
// Required. Name of the builder as <project>/<bucket>/<builder>
//
@@ -331,6 +356,26 @@
// "other-project/try/shared-try-builder"
string name = 1;
+ // If true, this builder will only be used if specified via
+ // `CQ-Include-Trybots:` on CL description.
+ //
+ // This is useful if you want individual CLs to opt-in to this builder,
+ // e.g.:
+ // builder {name: "win-release"} # required for all.
+ // builder {name: "win-debug" includable_only: true} # opt in only.
+ //
+ // Not combinable with:
+ // * location_regexp[_exclude]
+ // * experiment_percentage
+ // * triggered_by
+ bool includable_only = 9;
+
+ // Determines how visible the results of a build for this builder are in
+ // Gerrit for this tryjob.
+ //
+ // This doesn't affect the buildbucket plugin (green/red chips).
+ CommentLevel result_visibility = 10;
+
// Optional. If true, a fresh build will be required for each CQ attempt.
//
// Default is false, meaning CQ may re-use a successful build
@@ -364,10 +409,8 @@
//
// Failure/Retry semantics:
// * If `triggered_by` (parent) builder succeeds, but doesn't set
- // the right `triggered_build_ids` s.t. CQ can't find this (child)
- // builder among triggered builds, then CQ will wait till
- // TRYJOB_PENDING_TIMEOUT is reached, currently hardcoded at 2 hours.
- // TODO(tandrii,sergiyb): improve this.
+ // the right `triggered_build_ids` then CQ will wait for this child
+ // build to complete for as long as parent build result remains valid.
// * If this (child) builder fails and CQ still has retry budget,
// CQ will retry a parent builder.
//
@@ -386,16 +429,16 @@
string triggered_by = 3;
// Optional. When this field is present, it marks given builder as
- // experimental. It is only triggered on a given percentage of the CLs and
- // the outcome does not affect the decicion whether a CL can land or not.
- // This is typically used to test new builders and estimate their capacity
- // requirements.
+ // experimental. It is only triggered on a given percentage of the CLs
+ // and the outcome does not affect the decision of whether a CL can land
+ // or not. This is typically used to test new builders and estimate their
+ // capacity requirements.
float experiment_percentage = 4;
// Optionally specified alternative builder for CQ to choose instead.
// If provided, CQ will choose only one of the equivalent builders as
// required based purely on given CL and CL's owner and **regardless** of
- // the possibly already completed try jobs.
+ // the possibly already completed tryjobs.
//
// Note: none of the equivalent builders should be part of triggered_by
// chain, although CQ may eventually relax this requirement.
@@ -432,10 +475,10 @@
// Examples:
//
// location_regexp:
- // "https://chromium-review.googlesource.com/chromium/src/[+]/third_party/WebKit/.+"
+ // "https://chromium-review.googlesource.com/chromium/src/[+]/third_party/blink/.+"
// will enable builder for all CLs touching any file in
- // third_party/WebKit directory of the chromium/src repo, but not
- // directory itself.
+ // third_party/blink directory of the chromium/src repo, but not
+ // just the directory itself.
//
// location_regexp: "https://example.com/repo/[+]/.+"
// location_regexp_exclude: "https://example.com/repo/[+]/all/one.txt"
@@ -459,9 +502,9 @@
// Format is the same in the same format as Builder.name.
string name = 1;
// Percentage expressing probability of CQ triggering this builder instead
- // of the builder to which this builder is equilvanet to.
+ // of the builder to which this builder is equivalent to.
//
- // A choice itself is made deterministicly based on CL alone, hereby
+ // A choice itself is made deterministically based on CL alone, hereby
// all CQ attempts on all patchsets of a given CL will trigger the same
// builder, assuming CQ config doesn't change in the mean time.
//
@@ -483,6 +526,14 @@
string owner_whitelist_group = 3;
}
+ // Builder which can be included via `CQ-Include-Trybots:` in CL
+ // description.
+ message IncludableBuilder {
+ // Required. Name of this builder.
+ // Format is the same in the same format as Builder.name.
+ string name = 1;
+ }
+
// Collection of parameters for deciding whether to retry a single build.
// If parameter is not specified, its value defaults to 0 (per proto3).
// Thus, omitting all parameters means no retries of any kind.
diff --git a/recipe_proto/go.chromium.org/luci/cq/api/config/v2/gen.go b/recipe_proto/go.chromium.org/luci/cq/api/config/v2/gen.go
deleted file mode 100644
index 0b8598e..0000000
--- a/recipe_proto/go.chromium.org/luci/cq/api/config/v2/gen.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2018 The LUCI Authors.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//go:generate cproto
-
-// Package config contains CQ Config API.
-package config