Update CQ config protobuf.

R=machenbach@chromium.org
BUG=644915

Change-Id: Id0035e8b286c0f5b4c0c41aec7458965b9bd1a39
Reviewed-on: https://chromium-review.googlesource.com/421514
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Andrii Shyshkalov <tandrii@chromium.org>
changes/14/421514/2
Andrii Shyshkalov 9 years ago committed by Commit Bot
parent 7d51883926
commit dd013e2b68

@ -0,0 +1,2 @@
Import of CQ protobuf config from infra_internal repo.
Version: fde09c7a7b5e47b94a6aeffa24c8f339df0517a8 from Dec 19, 2016.

@ -39,7 +39,7 @@ infra/infra repository and go utilities `make go-prepare`.
## Notes ## Notes
1. Please make sure to use proto3-compatible yntax, e.g. no default 1. Please make sure to use proto3-compatible syntax, e.g. no default
values, no required fields. As of this writing (Jan 2016), values, no required fields. As of this writing (Jan 2016),
the Go protobuf compiler has been upgraded to 3.0.0. So, if you can generate go the Go protobuf compiler has been upgraded to 3.0.0. So, if you can generate go
bindings, all is good. bindings, all is good.

@ -25,6 +25,12 @@ var _ = proto.Marshal
var _ = fmt.Errorf var _ = fmt.Errorf
var _ = math.Inf 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.ProtoPackageIsVersion2 // please upgrade the proto package
// This message describes a Commit Queue configuration. The config file cq.cfg // This message describes a Commit Queue configuration. The config file cq.cfg
// should be stored in the config directory located on the branch that this CQ // should be stored in the config directory located on the branch that this CQ
// should commit to. // should commit to.
@ -36,43 +42,40 @@ type Config struct {
// name for CLs on Rietveld, name of the project in the status app, internal // name for CLs on Rietveld, name of the project in the status app, internal
// name for logging etc. CQ name should not be confused with the project name // name for logging etc. CQ name should not be confused with the project name
// in LUCI as there may be multiple CQs per project. // in LUCI as there may be multiple CQs per project.
CqName *string `protobuf:"bytes,2,opt,name=cq_name" json:"cq_name,omitempty"` CqName *string `protobuf:"bytes,2,opt,name=cq_name,json=cqName" json:"cq_name,omitempty"`
// List of verifiers that verify if the CL is ready to be committed. // List of verifiers that verify if the CL is ready to be committed.
Verifiers *Verifiers `protobuf:"bytes,3,opt,name=verifiers" json:"verifiers,omitempty"` Verifiers *Verifiers `protobuf:"bytes,3,opt,name=verifiers" json:"verifiers,omitempty"`
// URL of the CQ status app to push updates to. // URL of the CQ status app to push updates to.
CqStatusUrl *string `protobuf:"bytes,4,opt,name=cq_status_url" json:"cq_status_url,omitempty"` CqStatusUrl *string `protobuf:"bytes,4,opt,name=cq_status_url,json=cqStatusUrl" json:"cq_status_url,omitempty"`
// When true, hash of the commit is not posted by CQ. This is used for // DO NOT USE. Kept here for validator error messages.
// projects using gnumbd as latter publishes actual hash later. Default value HideRefInCommittedMsg *bool `protobuf:"varint,5,opt,name=hide_ref_in_committed_msg,json=hideRefInCommittedMsg" json:"hide_ref_in_committed_msg,omitempty"`
// is false.
HideRefInCommittedMsg *bool `protobuf:"varint,5,opt,name=hide_ref_in_committed_msg" json:"hide_ref_in_committed_msg,omitempty"`
// Delay between commit bursts in seconds. Default value is 480. // Delay between commit bursts in seconds. Default value is 480.
CommitBurstDelay *int32 `protobuf:"varint,6,opt,name=commit_burst_delay" json:"commit_burst_delay,omitempty"` CommitBurstDelay *int32 `protobuf:"varint,6,opt,name=commit_burst_delay,json=commitBurstDelay" json:"commit_burst_delay,omitempty"`
// Maximum number of commits done sequentially, before waiting for // Maximum number of commits done sequentially, before waiting for
// commit_burst_delay. Default value is 4. // commit_burst_delay. Default value is 4.
MaxCommitBurst *int32 `protobuf:"varint,7,opt,name=max_commit_burst" json:"max_commit_burst,omitempty"` MaxCommitBurst *int32 `protobuf:"varint,7,opt,name=max_commit_burst,json=maxCommitBurst" json:"max_commit_burst,omitempty"`
// Defines whether a CQ is used in production. Allows to disable CQ for a // Defines whether a CQ is used in production. Allows to disable CQ for a
// given branch. Default is true. // given branch. Default is true.
InProduction *bool `protobuf:"varint,8,opt,name=in_production" json:"in_production,omitempty"` InProduction *bool `protobuf:"varint,8,opt,name=in_production,json=inProduction" json:"in_production,omitempty"`
// Configuration options for Rietveld code review. // Configuration options for Rietveld code review.
Rietveld *Rietveld `protobuf:"bytes,9,opt,name=rietveld" json:"rietveld,omitempty"` Rietveld *Rietveld `protobuf:"bytes,9,opt,name=rietveld" json:"rietveld,omitempty"`
// EXPERIMENTAL! Configuration options for Gerrit code review. // Configuration options for Gerrit code review.
// TODO(tandrii): update this doc (GERRIT).
Gerrit *Gerrit `protobuf:"bytes,15,opt,name=gerrit" json:"gerrit,omitempty"` Gerrit *Gerrit `protobuf:"bytes,15,opt,name=gerrit" json:"gerrit,omitempty"`
// This can be used to override the Git repository URL used to checkout and // This can be used to override the Git repository URL used to checkout and
// commit changes on CQ host. This should only be used in case, when the // commit changes on CQ host. This should only be used in case, when the
// source repository is not supported by luci-config (e.g. GitHub). // source repository is not supported by luci-config (e.g. GitHub).
GitRepoUrl *string `protobuf:"bytes,10,opt,name=git_repo_url" json:"git_repo_url,omitempty"` GitRepoUrl *string `protobuf:"bytes,10,opt,name=git_repo_url,json=gitRepoUrl" json:"git_repo_url,omitempty"`
// Target ref to commit to. This can be used to specify a different ref than // Target ref to commit to. This can be used to specify a different ref than
// the one where the luci config is located. This is useful, e.g. for projects // the one where the luci config is located. This is useful, e.g. for projects
// that use gnumbd where CQ should commit into a pending ref. // that use gnumbd where CQ should commit into a pending ref.
TargetRef *string `protobuf:"bytes,11,opt,name=target_ref" json:"target_ref,omitempty"` TargetRef *string `protobuf:"bytes,11,opt,name=target_ref,json=targetRef" json:"target_ref,omitempty"`
// Deprecated. URL of the SVN repository. We are deprecating SVN support. // DO NOT USE. Kept here for validator error messages.
SvnRepoUrl *string `protobuf:"bytes,12,opt,name=svn_repo_url" json:"svn_repo_url,omitempty"` SvnRepoUrl *string `protobuf:"bytes,12,opt,name=svn_repo_url,json=svnRepoUrl" json:"svn_repo_url,omitempty"`
// If present, the CQ will refrain from processing any commits whose start // If present, the CQ will refrain from processing any commits whose start
// time is >= this time. // time is >= this time.
// //
// This is an UTC RFC3339 (stiptime(tm)) string representing the time. // This is an UTC RFC3339 (stiptime(tm)) string representing the time.
DrainingStartTime *string `protobuf:"bytes,13,opt,name=draining_start_time" json:"draining_start_time,omitempty"` DrainingStartTime *string `protobuf:"bytes,13,opt,name=draining_start_time,json=drainingStartTime" json:"draining_start_time,omitempty"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
} }
@ -182,12 +185,8 @@ func (m *Config) GetDrainingStartTime() string {
type Rietveld struct { type Rietveld struct {
// Required. URL of the codereview site. // Required. URL of the codereview site.
Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"` Url *string `protobuf:"bytes,1,opt,name=url" json:"url,omitempty"`
// List of regular expressions used to check if CL's base URL should be // DO NOT USE. Kept here for validator error messages.
// processed by this CQ. This may be useful if a single branch has multiple ProjectBases []string `protobuf:"bytes,2,rep,name=project_bases,json=projectBases" json:"project_bases,omitempty"`
// sub-directories that are handled by different CQs. When no regular
// expressions are specified, the regular expression '.*', which matches any
// directory, is used.
ProjectBases []string `protobuf:"bytes,2,rep,name=project_bases" json:"project_bases,omitempty"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
} }
@ -210,15 +209,10 @@ func (m *Rietveld) GetProjectBases() []string {
return nil return nil
} }
// Gerrit CQ is EXPERIMENTAL! See http://crbug.com/493899 for more info.
//
// Unlike Rietveld, Gerrit doesn't need a separate url. // Unlike Rietveld, Gerrit doesn't need a separate url.
// Instead, the git_repo_url must be specified on the Gerrit instance, // Instead, the git_repo_url must be specified on the Gerrit instance,
// and CQ will deduce Gerrit url from it. // and CQ will deduce Gerrit url from it.
// //
// TODO(tandrii): support Rietveld and Gerrit at the same time.
// This basically requires to start two CQ instances, instead of one.
//
// For example, if https://chromium.googlesource.com/infra/infra.git is your // For example, if https://chromium.googlesource.com/infra/infra.git is your
// repo url provided in `git_repo_url` above, then // repo url provided in `git_repo_url` above, then
// https://chromium-review.googlesource.com/#/admin/projects/infra/infra should // https://chromium-review.googlesource.com/#/admin/projects/infra/infra should
@ -230,14 +224,20 @@ func (m *Rietveld) GetProjectBases() []string {
// see it. This will come handy to enable and customize the CQ-related workflows // see it. This will come handy to enable and customize the CQ-related workflows
// for your project. // for your project.
type Gerrit struct { type Gerrit struct {
// Optional. If set, tells CQ vote on a given label to mark result of CQ run. // Optional. If set, tells CQ to vote on a given label to mark result of CQ
// The vote is either -1 if failed or 1 on success, and will be given on // run. The vote is either -1 if failed or 1 on success, and will be given on
// non-dry runs only. // non-dry runs only.
// This vote can then be used in Gerrit's rule for submitting issues, so as to // This vote can then be used in Gerrit's rule for submitting issues, so as to
// require CQ run. CQ will attempt to submit issue only after setting this // require CQ run. CQ will attempt to submit issue only after setting this
// label. // label.
CqVerifiedLabel *string `protobuf:"bytes,1,opt,name=cq_verified_label" json:"cq_verified_label,omitempty"` CqVerifiedLabel *string `protobuf:"bytes,1,opt,name=cq_verified_label,json=cqVerifiedLabel" json:"cq_verified_label,omitempty"`
XXX_unrecognized []byte `json:"-"` // Optional and only allowed if cq_verified_label is set. Default: False.
// If set, tells CQ to vote on the Verified label even on dry run.
// This is useful if CQ has no presubmit builders, as dry run would be
// totally equivalent to full run, except that CQ won't try to actually submit
// the code.
DryRunSetsCqVerifiedLabel *bool `protobuf:"varint,2,opt,name=dry_run_sets_cq_verified_label,json=dryRunSetsCqVerifiedLabel" json:"dry_run_sets_cq_verified_label,omitempty"`
XXX_unrecognized []byte `json:"-"`
} }
func (m *Gerrit) Reset() { *m = Gerrit{} } func (m *Gerrit) Reset() { *m = Gerrit{} }
@ -252,6 +252,13 @@ func (m *Gerrit) GetCqVerifiedLabel() string {
return "" return ""
} }
func (m *Gerrit) GetDryRunSetsCqVerifiedLabel() bool {
if m != nil && m.DryRunSetsCqVerifiedLabel != nil {
return *m.DryRunSetsCqVerifiedLabel
}
return false
}
// Verifiers are various types of checks that a Commit Queue performs on a CL. // 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 landed. Configuration file // All verifiers must pass in order for a CL to be landed. Configuration file
// describes types of verifiers that should be applied to each CL and their // describes types of verifiers that should be applied to each CL and their
@ -259,19 +266,21 @@ func (m *Gerrit) GetCqVerifiedLabel() string {
type Verifiers struct { type Verifiers struct {
// This verifier is used to ensure that an LGTM was posted to the code review // This verifier is used to ensure that an LGTM was posted to the code review
// site from a valid project committer. // site from a valid project committer.
// This verifier is not supported with Gerrit. // It is ignored in case of Gerrit, and you should not declare it unless you
ReviewerLgtm *Verifiers_ReviewerLgtmVerifier `protobuf:"bytes,1,opt,name=reviewer_lgtm" json:"reviewer_lgtm,omitempty"` // use both Gerrit and Rietveld for codereview. Unlike Rietveld, Gerrit has
// its own ACL system which should be set up by project admins.
ReviewerLgtm *Verifiers_ReviewerLgtmVerifier `protobuf:"bytes,1,opt,name=reviewer_lgtm,json=reviewerLgtm" json:"reviewer_lgtm,omitempty"`
// This verifier is used to check tree status before committing a CL. If the // 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. // tree is closed, then the verifier will wait until it is reopened.
TreeStatus *Verifiers_TreeStatusLgtmVerifier `protobuf:"bytes,2,opt,name=tree_status" json:"tree_status,omitempty"` TreeStatus *Verifiers_TreeStatusLgtmVerifier `protobuf:"bytes,2,opt,name=tree_status,json=treeStatus" json:"tree_status,omitempty"`
// This verifier triggers a set of tryjobs that are to be run on builders on // This verifier triggers a set of tryjobs that are to be run on builders on
// Buildbot. It automatically retries failed try-jobs and only allows CL to // Buildbot. It automatically retries failed try-jobs and only allows CL to
// land if each builder has succeeded in the latest retry. If a given tryjob // land if each builder has succeeded in the latest retry. If a given tryjob
// result is too old (>1 day) it is ignored. // result is too old (>1 day) it is ignored.
TryJob *Verifiers_TryJobVerifier `protobuf:"bytes,3,opt,name=try_job" json:"try_job,omitempty"` TryJob *Verifiers_TryJobVerifier `protobuf:"bytes,3,opt,name=try_job,json=tryJob" json:"try_job,omitempty"`
// This verifier is used to ensure that the author has signed Google's // This verifier is used to ensure that the author has signed Google's
// Contributor License Agreement. // Contributor License Agreement.
SignCla *Verifiers_SignCLAVerifier `protobuf:"bytes,4,opt,name=sign_cla" json:"sign_cla,omitempty"` SignCla *Verifiers_SignCLAVerifier `protobuf:"bytes,4,opt,name=sign_cla,json=signCla" json:"sign_cla,omitempty"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
} }
@ -312,20 +321,20 @@ type Verifiers_ReviewerLgtmVerifier struct {
// Required. Name of the chrome-infra-auth group, which contains the list of // Required. Name of the chrome-infra-auth group, which contains the list of
// identities authorized to approve (lgtm) a CL and trigger CQ run or dry // identities authorized to approve (lgtm) a CL and trigger CQ run or dry
// run. // run.
CommitterList *string `protobuf:"bytes,1,opt,name=committer_list" json:"committer_list,omitempty"` CommitterList *string `protobuf:"bytes,1,opt,name=committer_list,json=committerList" json:"committer_list,omitempty"`
// Number of seconds to wait for LGTM on CQ. Default value is 0. // Number of seconds to wait for LGTM on CQ. Default value is 0.
MaxWaitSecs *int32 `protobuf:"varint,2,opt,name=max_wait_secs" json:"max_wait_secs,omitempty"` MaxWaitSecs *int32 `protobuf:"varint,2,opt,name=max_wait_secs,json=maxWaitSecs" json:"max_wait_secs,omitempty"`
// Message to be posted to code review site when no LGTM is found. Default // Message to be posted to code review site when no LGTM is found. Default
// value is "No LGTM from a valid reviewer yet. Only full committers are " // value is "No LGTM from a valid reviewer yet. Only full committers are "
// "accepted.\nEven if an LGTM may have been provided, it was from a " // "accepted.\nEven if an LGTM may have been provided, it was from a "
// "non-committer,\n_not_ a full super star committer.\nSee " // "non-committer,\n_not_ a full super star committer.\nSee "
// "http://www.chromium.org/getting-involved/become-a-committer\nNote that " // "http://www.chromium.org/getting-involved/become-a-committer\nNote that "
// "this has nothing to do with OWNERS files." // "this has nothing to do with OWNERS files."
NoLgtmMsg *string `protobuf:"bytes,3,opt,name=no_lgtm_msg" json:"no_lgtm_msg,omitempty"` NoLgtmMsg *string `protobuf:"bytes,3,opt,name=no_lgtm_msg,json=noLgtmMsg" json:"no_lgtm_msg,omitempty"`
// Optional, but recommended. Name of the chrome-infra-auth group, // Optional, but recommended. Name of the chrome-infra-auth group,
// which contains the list of identities authorized to trigger CQ dry run. // which contains the list of identities authorized to trigger CQ dry run.
// This is usually the same group as tryjob-access. // This is usually the same group as tryjob-access.
DryRunAccessList *string `protobuf:"bytes,4,opt,name=dry_run_access_list" json:"dry_run_access_list,omitempty"` DryRunAccessList *string `protobuf:"bytes,4,opt,name=dry_run_access_list,json=dryRunAccessList" json:"dry_run_access_list,omitempty"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
} }
@ -366,7 +375,7 @@ func (m *Verifiers_ReviewerLgtmVerifier) GetDryRunAccessList() string {
type Verifiers_TreeStatusLgtmVerifier struct { type Verifiers_TreeStatusLgtmVerifier struct {
// Required. URL of the project tree status app. // Required. URL of the project tree status app.
TreeStatusUrl *string `protobuf:"bytes,1,opt,name=tree_status_url" json:"tree_status_url,omitempty"` TreeStatusUrl *string `protobuf:"bytes,1,opt,name=tree_status_url,json=treeStatusUrl" json:"tree_status_url,omitempty"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
} }
@ -389,7 +398,7 @@ type Verifiers_TryJobVerifier struct {
Buckets []*Verifiers_TryJobVerifier_Bucket `protobuf:"bytes,1,rep,name=buckets" json:"buckets,omitempty"` Buckets []*Verifiers_TryJobVerifier_Bucket `protobuf:"bytes,1,rep,name=buckets" json:"buckets,omitempty"`
// Provides project specific trybot retry configuration. This overrides the // Provides project specific trybot retry configuration. This overrides the
// defaults used in the CQ. // defaults used in the CQ.
TryJobRetryConfig *Verifiers_TryJobVerifier_TryJobRetryConfig `protobuf:"bytes,2,opt,name=try_job_retry_config" json:"try_job_retry_config,omitempty"` TryJobRetryConfig *Verifiers_TryJobVerifier_TryJobRetryConfig `protobuf:"bytes,2,opt,name=try_job_retry_config,json=tryJobRetryConfig" json:"try_job_retry_config,omitempty"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
} }
@ -418,12 +427,12 @@ type Verifiers_TryJobVerifier_Builder struct {
// Optionally specify a builder name that triggers the given builder. // Optionally specify a builder name that triggers the given builder.
// Otherwise, CQ will trigger this builder (default). If in doubt, you // Otherwise, CQ will trigger this builder (default). If in doubt, you
// probably won't need this. // probably won't need this.
TriggeredBy *string `protobuf:"bytes,2,opt,name=triggered_by" json:"triggered_by,omitempty"` TriggeredBy *string `protobuf:"bytes,2,opt,name=triggered_by,json=triggeredBy" json:"triggered_by,omitempty"`
// When this field is present, it marks given builder as experimental. It // When this field is present, it marks given builder as experimental. It
// is only executed on a given percentage of the CLs and the outcome does // is only executed 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 // not affect the decicion whether a CL can land or not. This is typically
// used to test new builders and estimate their capacity requirements. // used to test new builders and estimate their capacity requirements.
ExperimentPercentage *float32 `protobuf:"fixed32,4,opt,name=experiment_percentage" json:"experiment_percentage,omitempty"` ExperimentPercentage *float32 `protobuf:"fixed32,4,opt,name=experiment_percentage,json=experimentPercentage" json:"experiment_percentage,omitempty"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
} }
@ -488,15 +497,15 @@ func (m *Verifiers_TryJobVerifier_Bucket) GetBuilders() []*Verifiers_TryJobVerif
type Verifiers_TryJobVerifier_TryJobRetryConfig struct { type Verifiers_TryJobVerifier_TryJobRetryConfig struct {
// Retry quota for a single tryjob. // Retry quota for a single tryjob.
TryJobRetryQuota *int32 `protobuf:"varint,1,opt,name=try_job_retry_quota" json:"try_job_retry_quota,omitempty"` TryJobRetryQuota *int32 `protobuf:"varint,1,opt,name=try_job_retry_quota,json=tryJobRetryQuota" json:"try_job_retry_quota,omitempty"`
// Retry quota for all tryjobs in a CL. // Retry quota for all tryjobs in a CL.
GlobalRetryQuota *int32 `protobuf:"varint,2,opt,name=global_retry_quota" json:"global_retry_quota,omitempty"` GlobalRetryQuota *int32 `protobuf:"varint,2,opt,name=global_retry_quota,json=globalRetryQuota" json:"global_retry_quota,omitempty"`
// The weight assigned to each tryjob failure. // The weight assigned to each tryjob failure.
FailureRetryWeight *int32 `protobuf:"varint,3,opt,name=failure_retry_weight" json:"failure_retry_weight,omitempty"` FailureRetryWeight *int32 `protobuf:"varint,3,opt,name=failure_retry_weight,json=failureRetryWeight" json:"failure_retry_weight,omitempty"`
// The weight assigned to each transient failure. // The weight assigned to each transient failure.
TransientFailureRetryWeight *int32 `protobuf:"varint,4,opt,name=transient_failure_retry_weight" json:"transient_failure_retry_weight,omitempty"` TransientFailureRetryWeight *int32 `protobuf:"varint,4,opt,name=transient_failure_retry_weight,json=transientFailureRetryWeight" json:"transient_failure_retry_weight,omitempty"`
// The weight assigned to tryjob timeouts. // The weight assigned to tryjob timeouts.
TimeoutRetryWeight *int32 `protobuf:"varint,5,opt,name=timeout_retry_weight" json:"timeout_retry_weight,omitempty"` TimeoutRetryWeight *int32 `protobuf:"varint,5,opt,name=timeout_retry_weight,json=timeoutRetryWeight" json:"timeout_retry_weight,omitempty"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
} }
@ -569,49 +578,68 @@ func init() {
proto.RegisterType((*Verifiers_SignCLAVerifier)(nil), "Verifiers.SignCLAVerifier") proto.RegisterType((*Verifiers_SignCLAVerifier)(nil), "Verifiers.SignCLAVerifier")
} }
func init() { proto.RegisterFile("cq.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{ var fileDescriptor0 = []byte{
// 687 bytes of a gzipped FileDescriptorProto // 959 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x54, 0xdd, 0x4e, 0xdb, 0x4c, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x55, 0x5b, 0x6f, 0x23, 0xb5,
0x10, 0x55, 0x08, 0x49, 0x9c, 0x31, 0x90, 0x0f, 0x13, 0xc0, 0x98, 0xaf, 0x2d, 0x50, 0xa9, 0xaa, 0x17, 0x57, 0xd2, 0xe6, 0x76, 0x26, 0x69, 0x53, 0xff, 0xbb, 0x7f, 0xa6, 0x41, 0x74, 0xb3, 0x85,
0xda, 0xca, 0x12, 0xa9, 0xd4, 0xfb, 0xc2, 0x45, 0xd5, 0x96, 0x2b, 0xa8, 0x7a, 0xbb, 0x5a, 0xdb, 0x45, 0x11, 0x97, 0x68, 0x15, 0xc4, 0x0b, 0x02, 0x89, 0x26, 0x2b, 0x10, 0xa8, 0xa0, 0xc5, 0xdd,
0x13, 0xb3, 0xd4, 0x3f, 0xb0, 0xbb, 0x4e, 0xc8, 0x5b, 0xf5, 0x81, 0x7a, 0xd7, 0x47, 0xe8, 0x0b, 0x65, 0x1f, 0x40, 0xb2, 0x9c, 0x99, 0x93, 0x59, 0x2f, 0x73, 0x49, 0x6c, 0x4f, 0xda, 0x7c, 0x14,
0x74, 0xbc, 0x76, 0x7e, 0x4b, 0xae, 0x6c, 0xcf, 0x39, 0x33, 0x9e, 0x39, 0x73, 0x76, 0xc1, 0x0a, 0x78, 0x45, 0xbc, 0xf3, 0x11, 0x91, 0xed, 0x99, 0x49, 0xd2, 0x76, 0xdf, 0xe2, 0xdf, 0xe5, 0x78,
0x1f, 0xfc, 0x7b, 0x99, 0xeb, 0xfc, 0xec, 0xf7, 0x06, 0xb4, 0x2f, 0xf3, 0x6c, 0x28, 0x62, 0xa7, 0xfc, 0xf3, 0x39, 0x0e, 0xb4, 0x83, 0xd5, 0x78, 0x29, 0x33, 0x9d, 0x5d, 0xfc, 0x7d, 0x08, 0xcd,
0x07, 0x9d, 0x11, 0x4a, 0x25, 0xf2, 0xcc, 0x6d, 0x9c, 0x34, 0x5e, 0xb7, 0xca, 0x40, 0xf8, 0xc0, 0x59, 0x96, 0x2e, 0x44, 0x44, 0x7c, 0x68, 0xad, 0x51, 0x2a, 0x91, 0xa5, 0x7e, 0x6d, 0x58, 0x1b,
0x32, 0x9e, 0xa2, 0xbb, 0x41, 0x81, 0xae, 0xf3, 0x0c, 0xba, 0xc4, 0x10, 0x43, 0x41, 0x34, 0xb7, 0x35, 0x68, 0xb9, 0x24, 0xef, 0x41, 0x2b, 0x58, 0xb1, 0x94, 0x27, 0xe8, 0xd7, 0x87, 0xb5, 0x51,
0x49, 0x21, 0x7b, 0x00, 0xfe, 0xf7, 0x69, 0xc4, 0xd9, 0x87, 0x6d, 0xe2, 0x2b, 0xcd, 0x75, 0xa1, 0x87, 0x36, 0x83, 0xd5, 0xcf, 0x3c, 0x41, 0x32, 0x82, 0xce, 0x1a, 0xa5, 0x58, 0x08, 0x94, 0xca,
0x58, 0x21, 0x13, 0x77, 0xd3, 0x64, 0x9d, 0xc2, 0xd1, 0xad, 0x88, 0x90, 0x49, 0x1c, 0x32, 0x91, 0x3f, 0x18, 0xd6, 0x46, 0xde, 0x04, 0xc6, 0xbf, 0x96, 0x08, 0xdd, 0x92, 0xe4, 0x02, 0x7a, 0xc1,
0xb1, 0x30, 0x4f, 0x53, 0xa1, 0x35, 0x46, 0x2c, 0x55, 0xb1, 0xdb, 0x22, 0x8a, 0xe5, 0x78, 0xe0, 0x8a, 0x29, 0xcd, 0x75, 0xae, 0x58, 0x2e, 0x63, 0xff, 0xd0, 0x16, 0xf2, 0x82, 0xd5, 0xb5, 0xc5,
0x54, 0x61, 0x16, 0x14, 0x52, 0x69, 0x16, 0x61, 0xc2, 0x27, 0x6e, 0xdb, 0x74, 0xe1, 0xc2, 0x7f, 0x5e, 0xc9, 0x98, 0x7c, 0x0d, 0x67, 0x6f, 0x44, 0x88, 0x4c, 0xe2, 0x82, 0x89, 0x94, 0x05, 0x59,
0x29, 0x7f, 0x64, 0x8b, 0xb8, 0xdb, 0x31, 0x08, 0xfd, 0x8f, 0xea, 0xd1, 0x1c, 0x51, 0x11, 0xea, 0x92, 0x08, 0xad, 0x31, 0x64, 0x89, 0x8a, 0xfc, 0xc6, 0xb0, 0x36, 0x6a, 0x4f, 0xeb, 0x7e, 0x8d,
0xb2, 0x6d, 0xcb, 0x14, 0x3b, 0x06, 0x4b, 0x0a, 0xd4, 0x23, 0x4c, 0x22, 0xb7, 0x6b, 0x9a, 0xec, 0x3e, 0x32, 0x22, 0x8a, 0x8b, 0x1f, 0xd2, 0x59, 0xa9, 0xf8, 0x49, 0x45, 0xe4, 0x33, 0x20, 0xce,
0xfa, 0xd7, 0x75, 0xc0, 0x39, 0x84, 0x76, 0x8c, 0x52, 0x0a, 0xed, 0xf6, 0x0c, 0xd4, 0xf1, 0x3f, 0xc1, 0xe6, 0xb9, 0x54, 0x9a, 0x85, 0x18, 0xf3, 0x8d, 0xdf, 0xb4, 0x27, 0xe9, 0x3b, 0x66, 0x6a,
0x99, 0x4f, 0xa7, 0x0f, 0x5b, 0x31, 0xd5, 0x97, 0x78, 0x9f, 0x9b, 0xde, 0xc1, 0xf4, 0xee, 0x00, 0x88, 0xe7, 0x06, 0x27, 0x23, 0xe8, 0x27, 0xfc, 0x96, 0xed, 0x3a, 0xfc, 0x96, 0xd5, 0x1e, 0x25,
0x68, 0x2e, 0x63, 0x2c, 0x81, 0xa1, 0x6b, 0x9b, 0x18, 0x31, 0xd5, 0x28, 0x9b, 0x33, 0xb7, 0x4c, 0xfc, 0x76, 0xb6, 0x95, 0x93, 0x0f, 0xa1, 0x27, 0x52, 0xb6, 0x94, 0x59, 0x98, 0x07, 0xda, 0x84,
0xf4, 0x18, 0xf6, 0x22, 0xc9, 0x45, 0x26, 0xb2, 0xb8, 0x94, 0x40, 0x6a, 0xa6, 0x05, 0x09, 0xb7, 0xd3, 0x36, 0x5f, 0x42, 0xbb, 0x22, 0x7d, 0x51, 0x61, 0xe4, 0x29, 0xb4, 0xa5, 0x40, 0xbd, 0xc6,
0x5d, 0x82, 0x67, 0x3e, 0x58, 0xb3, 0x0e, 0x6c, 0x68, 0x96, 0x59, 0x0d, 0x93, 0x45, 0x23, 0x50, 0x38, 0xf4, 0x3b, 0x36, 0x87, 0xce, 0x98, 0x16, 0x00, 0xad, 0x28, 0xf2, 0x18, 0x9a, 0x11, 0x4a,
0xff, 0x77, 0x18, 0xd2, 0x64, 0x5c, 0xa1, 0x22, 0xa1, 0x9b, 0xc4, 0x7f, 0x09, 0xed, 0xba, 0xad, 0x29, 0xb4, 0x7f, 0x6c, 0x45, 0xad, 0xf1, 0xf7, 0x76, 0x49, 0x0b, 0x98, 0x0c, 0xa1, 0x1b, 0x09,
0x23, 0xd8, 0x25, 0x4d, 0x6b, 0xd5, 0x23, 0x96, 0xf0, 0x00, 0xeb, 0xdc, 0xb3, 0x3f, 0x6d, 0xe8, 0xcd, 0x24, 0x2e, 0x33, 0x9b, 0x12, 0xd8, 0x94, 0x20, 0x12, 0x9a, 0xe2, 0x32, 0x33, 0x21, 0x7d,
0xce, 0xc5, 0xff, 0x00, 0xdb, 0x12, 0x47, 0x02, 0xc7, 0x28, 0x59, 0x12, 0xeb, 0xd4, 0x90, 0xec, 0x00, 0xa0, 0xb9, 0x8c, 0xd0, 0x88, 0x16, 0xbe, 0x67, 0xf9, 0x8e, 0x43, 0x28, 0x2e, 0xc8, 0x47,
0xc1, 0x8b, 0xf9, 0x7e, 0xfc, 0xeb, 0x1a, 0xbf, 0x22, 0x78, 0x1a, 0xa5, 0x3c, 0x5b, 0x4b, 0xc4, 0xd0, 0x55, 0xeb, 0x74, 0x5b, 0xa0, 0x6b, 0x04, 0x36, 0x36, 0x50, 0xeb, 0xb4, 0x2c, 0x32, 0x86,
0x7a, 0x6d, 0x66, 0xd1, 0xf6, 0xe0, 0x74, 0x21, 0xeb, 0x1b, 0xa1, 0x37, 0x06, 0x5c, 0xca, 0x7b, 0xff, 0x85, 0x92, 0x8b, 0x54, 0xa4, 0x91, 0xb9, 0x13, 0xa9, 0x99, 0x16, 0x09, 0xfa, 0x3d, 0x5b,
0x03, 0x1d, 0x2d, 0x27, 0xec, 0x2e, 0x0f, 0x6a, 0x27, 0x1c, 0x2d, 0xe5, 0x4c, 0xbe, 0xe4, 0xc1, 0xed, 0xa4, 0xa4, 0xae, 0x0d, 0xf3, 0x52, 0x24, 0x78, 0x71, 0x09, 0xed, 0xf2, 0x34, 0xa4, 0x0f,
0x8c, 0xfb, 0x0e, 0x2c, 0x25, 0x62, 0x5a, 0x7d, 0xc2, 0x8d, 0x27, 0xec, 0x81, 0xb7, 0x40, 0xbe, 0x07, 0xa6, 0x70, 0xcd, 0x6a, 0xcd, 0x4f, 0x93, 0xd0, 0x52, 0x66, 0x6f, 0x31, 0xd0, 0x6c, 0xce,
0x21, 0xe8, 0xf2, 0xea, 0xe3, 0x34, 0xe0, 0x8d, 0xa1, 0xff, 0x64, 0xa7, 0x07, 0xb0, 0x33, 0xf5, 0x15, 0x2a, 0xbf, 0x3e, 0x3c, 0x18, 0x75, 0x68, 0xb7, 0x00, 0xa7, 0x06, 0xbb, 0xb8, 0x81, 0xa6,
0x0e, 0x8d, 0x28, 0xc8, 0x06, 0x33, 0x0d, 0x4b, 0x83, 0x8c, 0x39, 0xad, 0x4f, 0x61, 0x58, 0xcd, 0x3b, 0x2b, 0xf9, 0x04, 0x4e, 0x82, 0x15, 0x2b, 0x5a, 0x23, 0x64, 0x31, 0x9f, 0x63, 0x59, 0xee,
0xd0, 0x72, 0xf6, 0xc0, 0xce, 0x72, 0x23, 0x85, 0x31, 0x5a, 0x73, 0xbe, 0xa5, 0x09, 0x93, 0x45, 0x38, 0x58, 0x15, 0xdd, 0x13, 0x5e, 0x19, 0x98, 0x5c, 0xc2, 0x79, 0x28, 0x37, 0x4c, 0xe6, 0x29,
0xc6, 0x78, 0x18, 0xa2, 0x52, 0x55, 0x21, 0x63, 0x54, 0xef, 0x1c, 0x0e, 0xd6, 0x0c, 0x7b, 0x08, 0x53, 0xa8, 0x15, 0xbb, 0x6f, 0xac, 0xdb, 0xdb, 0x38, 0x0b, 0xe5, 0x86, 0xe6, 0xe9, 0x35, 0x6a,
0xbd, 0x05, 0x91, 0xd8, 0x6c, 0x7f, 0xde, 0xaf, 0x26, 0xec, 0xac, 0x0c, 0x7b, 0x0e, 0x9d, 0xa0, 0x35, 0xdb, 0x2f, 0x71, 0xf1, 0x4f, 0x07, 0x3a, 0x55, 0x4b, 0x92, 0xe7, 0xd0, 0x93, 0xb8, 0x16,
0x08, 0x7f, 0xa0, 0x56, 0xc4, 0x69, 0xd2, 0xac, 0x27, 0x6b, 0x85, 0xf1, 0x2f, 0x0c, 0xd1, 0xf9, 0x78, 0x83, 0x92, 0xc5, 0x91, 0x4e, 0xec, 0xc6, 0xde, 0xe4, 0xf1, 0xb6, 0x6b, 0xc7, 0xb4, 0xe0,
0x0c, 0xfd, 0x5a, 0x4b, 0x72, 0x55, 0xf9, 0x16, 0x9a, 0x13, 0x59, 0x2f, 0xe3, 0xed, 0xfa, 0xfc, 0xaf, 0x22, 0x9d, 0x94, 0x28, 0xed, 0xca, 0x1d, 0x94, 0x4c, 0xc1, 0xd3, 0x12, 0xb1, 0xe8, 0x67,
0xea, 0xf3, 0xba, 0xcc, 0xa9, 0x0e, 0xb1, 0x77, 0x05, 0x9d, 0x8b, 0x42, 0x24, 0x11, 0x35, 0xb2, 0xfb, 0x0d, 0xde, 0xe4, 0xc9, 0x4e, 0x8d, 0x97, 0x12, 0xd1, 0x35, 0xf6, 0x5e, 0x15, 0xd0, 0x15,
0x05, 0x9b, 0xe6, 0xec, 0x36, 0xa6, 0xae, 0xd5, 0x52, 0xc4, 0x64, 0x7e, 0xb2, 0x51, 0x30, 0x99, 0x4e, 0x26, 0xd0, 0xd2, 0x72, 0xc3, 0xde, 0x66, 0xf3, 0x62, 0x72, 0xce, 0xf6, 0xfc, 0x9b, 0x1f,
0x9d, 0xe8, 0x7d, 0x7c, 0xbc, 0xa7, 0x72, 0x29, 0x66, 0x9a, 0xd1, 0x4b, 0x48, 0x4f, 0x1e, 0xa3, 0xb3, 0x79, 0xe5, 0x6b, 0x6a, 0xbb, 0x26, 0x5f, 0x42, 0x5b, 0x89, 0x28, 0x65, 0x41, 0xcc, 0xed,
0x51, 0x64, 0xc3, 0xfb, 0x0a, 0xed, 0xba, 0xc5, 0xe5, 0x62, 0xef, 0xc1, 0x0a, 0xaa, 0xbf, 0x54, 0x00, 0x79, 0x93, 0xc1, 0x8e, 0xe9, 0x5a, 0x44, 0xe9, 0xec, 0xea, 0xb2, 0x72, 0xb5, 0x8c, 0x76,
0x8e, 0x5d, 0x75, 0xcc, 0xca, 0x90, 0x86, 0xe9, 0xfd, 0x6c, 0xc0, 0xee, 0x3f, 0x0d, 0x97, 0x1b, 0x16, 0xf3, 0xc1, 0xbf, 0x35, 0x38, 0x7d, 0xe8, 0x54, 0xe4, 0x29, 0x1c, 0x95, 0x53, 0x26, 0x59,
0x59, 0x9e, 0xfd, 0xa1, 0xc8, 0x35, 0xaf, 0x6f, 0x20, 0xba, 0x17, 0xe2, 0x24, 0x0f, 0x78, 0xb2, 0x2c, 0x94, 0x2e, 0xee, 0xa1, 0x57, 0xa1, 0x57, 0x42, 0x69, 0x33, 0xbc, 0x66, 0x58, 0x6e, 0xb8,
0x84, 0x55, 0xfb, 0xfd, 0x1f, 0xfa, 0x43, 0x2e, 0x92, 0x42, 0x62, 0x0d, 0x8e, 0x51, 0xc4, 0xb7, 0xd0, 0x4c, 0x61, 0xe0, 0x0e, 0xdc, 0xa0, 0x5e, 0xc2, 0x6f, 0x5f, 0x73, 0xa1, 0xaf, 0x31, 0x50,
0xda, 0x2c, 0xba, 0xe5, 0xbc, 0x82, 0xe7, 0x5a, 0xf2, 0x4c, 0x89, 0x72, 0xae, 0x27, 0x79, 0x9b, 0xe4, 0x1c, 0xbc, 0x34, 0xb3, 0x91, 0xda, 0x71, 0x3d, 0x70, 0x8d, 0x99, 0x66, 0x66, 0x3f, 0x33,
0xd3, 0x2a, 0xe5, 0x39, 0xcd, 0x0b, 0xbd, 0x8c, 0x96, 0xf7, 0x52, 0xcb, 0xdb, 0x85, 0xde, 0x8a, 0x9e, 0x9f, 0x9b, 0x96, 0x73, 0x37, 0xc9, 0x83, 0x00, 0x95, 0x72, 0xfb, 0xb9, 0x67, 0xa0, 0xef,
0x3b, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xe9, 0x92, 0xf5, 0x6a, 0x3b, 0x05, 0x00, 0x00, 0xae, 0xef, 0xd2, 0x12, 0x66, 0xcb, 0xc1, 0xb7, 0xf0, 0xff, 0x87, 0x33, 0x24, 0x1f, 0xc3, 0xf1,
0x4e, 0xf6, 0x6c, 0xdb, 0x8b, 0xbd, 0x6d, 0xb8, 0xaf, 0x64, 0x3c, 0xf8, 0xab, 0x01, 0x47, 0xfb,
0x31, 0x92, 0xaf, 0xa0, 0x35, 0xcf, 0x83, 0x3f, 0x50, 0x2b, 0xbf, 0x36, 0x3c, 0x18, 0x79, 0x93,
0xe1, 0x3b, 0x23, 0x1f, 0x4f, 0xad, 0x90, 0x96, 0x06, 0xf2, 0x3b, 0x9c, 0x16, 0xd7, 0xc5, 0x24,
0x9a, 0x5f, 0x81, 0x7d, 0x35, 0x8b, 0xbb, 0xff, 0xf4, 0xdd, 0x85, 0xdc, 0x92, 0x1a, 0x8f, 0x7b,
0x68, 0xe9, 0x89, 0xbe, 0x0b, 0x0d, 0x72, 0x68, 0x4d, 0x73, 0x11, 0x87, 0x28, 0x09, 0x81, 0x43,
0xfb, 0xd2, 0xba, 0x43, 0xd9, 0xdf, 0xe4, 0x09, 0x74, 0xb5, 0x14, 0x51, 0x84, 0x12, 0x43, 0x36,
0xdf, 0x14, 0xaf, 0xb0, 0x57, 0x61, 0xd3, 0x0d, 0xf9, 0x02, 0x1e, 0xe1, 0xed, 0x12, 0xa5, 0x48,
0x30, 0xd5, 0x6c, 0x89, 0x32, 0xc0, 0x54, 0xf3, 0x08, 0x6d, 0xc2, 0x75, 0x7a, 0xba, 0x25, 0x5f,
0x54, 0xdc, 0xe0, 0x37, 0x68, 0xba, 0x73, 0x3e, 0xb8, 0xeb, 0x37, 0xd0, 0x9e, 0xbb, 0x8f, 0x72,
0x23, 0x7d, 0xb7, 0xc5, 0xef, 0xe4, 0x65, 0x95, 0xb4, 0xb2, 0x0c, 0xfe, 0xac, 0xc3, 0xc9, 0xbd,
0xc3, 0x9b, 0x3e, 0xd8, 0xcf, 0x71, 0x95, 0x67, 0x9a, 0x17, 0xff, 0x38, 0xfd, 0x9d, 0x64, 0x7e,
0x31, 0xb8, 0x79, 0xd5, 0xa3, 0x38, 0x9b, 0xf3, 0x78, 0x4f, 0xed, 0xfa, 0xaf, 0xef, 0x98, 0x1d,
0xf5, 0x33, 0x38, 0x5d, 0x70, 0x11, 0xe7, 0x12, 0x0b, 0xf9, 0x0d, 0x8a, 0xe8, 0x8d, 0xb6, 0xdd,
0xd8, 0xa0, 0xa4, 0xe0, 0xac, 0xe1, 0xb5, 0x65, 0xc8, 0x0c, 0xce, 0xb5, 0xe4, 0xa9, 0x12, 0x26,
0xb5, 0x07, 0xbd, 0x87, 0xd6, 0xfb, 0x7e, 0xa5, 0xfa, 0xee, 0x7e, 0x91, 0x67, 0x70, 0x6a, 0xde,
0xcf, 0x2c, 0xd7, 0xfb, 0xd6, 0x86, 0xdb, 0xb6, 0xe0, 0x76, 0x1c, 0x83, 0x13, 0x38, 0xbe, 0x33,
0xad, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xe7, 0xaf, 0xdd, 0x86, 0x94, 0x07, 0x00, 0x00,
} }

@ -20,10 +20,8 @@ message Config {
// URL of the CQ status app to push updates to. // URL of the CQ status app to push updates to.
optional string cq_status_url = 4; optional string cq_status_url = 4;
// When true, hash of the commit is not posted by CQ. This is used for // DO NOT USE. Kept here for validator error messages.
// projects using gnumbd as latter publishes actual hash later. Default value optional bool hide_ref_in_committed_msg = 5 [deprecated = true];
// is false.
optional bool hide_ref_in_committed_msg = 5;
// Delay between commit bursts in seconds. Default value is 480. // Delay between commit bursts in seconds. Default value is 480.
optional int32 commit_burst_delay = 6; optional int32 commit_burst_delay = 6;
@ -39,8 +37,7 @@ message Config {
// Configuration options for Rietveld code review. // Configuration options for Rietveld code review.
optional Rietveld rietveld = 9; optional Rietveld rietveld = 9;
// EXPERIMENTAL! Configuration options for Gerrit code review. // Configuration options for Gerrit code review.
// TODO(tandrii): update this doc (GERRIT).
optional Gerrit gerrit = 15; optional Gerrit gerrit = 15;
// This can be used to override the Git repository URL used to checkout and // This can be used to override the Git repository URL used to checkout and
@ -53,8 +50,8 @@ message Config {
// that use gnumbd where CQ should commit into a pending ref. // that use gnumbd where CQ should commit into a pending ref.
optional string target_ref = 11; optional string target_ref = 11;
// Deprecated. URL of the SVN repository. We are deprecating SVN support. // DO NOT USE. Kept here for validator error messages.
optional string svn_repo_url = 12; optional string svn_repo_url = 12 [deprecated = true];
// If present, the CQ will refrain from processing any commits whose start // If present, the CQ will refrain from processing any commits whose start
// time is >= this time. // time is >= this time.
@ -67,23 +64,14 @@ message Rietveld {
// Required. URL of the codereview site. // Required. URL of the codereview site.
optional string url = 1; optional string url = 1;
// List of regular expressions used to check if CL's base URL should be // DO NOT USE. Kept here for validator error messages.
// processed by this CQ. This may be useful if a single branch has multiple
// sub-directories that are handled by different CQs. When no regular
// expressions are specified, the regular expression '.*', which matches any
// directory, is used.
repeated string project_bases = 2; repeated string project_bases = 2;
} }
// Gerrit CQ is EXPERIMENTAL! See http://crbug.com/493899 for more info.
//
// Unlike Rietveld, Gerrit doesn't need a separate url. // Unlike Rietveld, Gerrit doesn't need a separate url.
// Instead, the git_repo_url must be specified on the Gerrit instance, // Instead, the git_repo_url must be specified on the Gerrit instance,
// and CQ will deduce Gerrit url from it. // and CQ will deduce Gerrit url from it.
// //
// TODO(tandrii): support Rietveld and Gerrit at the same time.
// This basically requires to start two CQ instances, instead of one.
//
// For example, if https://chromium.googlesource.com/infra/infra.git is your // For example, if https://chromium.googlesource.com/infra/infra.git is your
// repo url provided in `git_repo_url` above, then // repo url provided in `git_repo_url` above, then
// https://chromium-review.googlesource.com/#/admin/projects/infra/infra should // https://chromium-review.googlesource.com/#/admin/projects/infra/infra should
@ -95,13 +83,20 @@ message Rietveld {
// see it. This will come handy to enable and customize the CQ-related workflows // see it. This will come handy to enable and customize the CQ-related workflows
// for your project. // for your project.
message Gerrit { message Gerrit {
// Optional. If set, tells CQ vote on a given label to mark result of CQ run. // Optional. If set, tells CQ to vote on a given label to mark result of CQ
// The vote is either -1 if failed or 1 on success, and will be given on // run. The vote is either -1 if failed or 1 on success, and will be given on
// non-dry runs only. // non-dry runs only.
// This vote can then be used in Gerrit's rule for submitting issues, so as to // This vote can then be used in Gerrit's rule for submitting issues, so as to
// require CQ run. CQ will attempt to submit issue only after setting this // require CQ run. CQ will attempt to submit issue only after setting this
// label. // label.
optional string cq_verified_label = 1; optional string cq_verified_label = 1;
// Optional and only allowed if cq_verified_label is set. Default: False.
// If set, tells CQ to vote on the Verified label even on dry run.
// This is useful if CQ has no presubmit builders, as dry run would be
// totally equivalent to full run, except that CQ won't try to actually submit
// the code.
optional bool dry_run_sets_cq_verified_label = 2;
} }
// Verifiers are various types of checks that a Commit Queue performs on a CL. // Verifiers are various types of checks that a Commit Queue performs on a CL.
@ -111,7 +106,9 @@ message Gerrit {
message Verifiers { message Verifiers {
// This verifier is used to ensure that an LGTM was posted to the code review // This verifier is used to ensure that an LGTM was posted to the code review
// site from a valid project committer. // site from a valid project committer.
// This verifier is not supported with Gerrit. // It is ignored in case of Gerrit, and you should not declare it unless you
// use both Gerrit and Rietveld for codereview. Unlike Rietveld, Gerrit has
// its own ACL system which should be set up by project admins.
optional ReviewerLgtmVerifier reviewer_lgtm = 1; optional ReviewerLgtmVerifier reviewer_lgtm = 1;
// This verifier is used to check tree status before committing a CL. If the // This verifier is used to check tree status before committing a CL. If the

@ -26,7 +26,7 @@ _sym_db = _symbol_database.Default()
DESCRIPTOR = _descriptor.FileDescriptor( DESCRIPTOR = _descriptor.FileDescriptor(
name='cq.proto', name='cq.proto',
package='', package='',
serialized_pb=_b('\n\x08\x63q.proto\"\xe3\x02\n\x06\x43onfig\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x0f\n\x07\x63q_name\x18\x02 \x01(\t\x12\x1d\n\tverifiers\x18\x03 \x01(\x0b\x32\n.Verifiers\x12\x15\n\rcq_status_url\x18\x04 \x01(\t\x12!\n\x19hide_ref_in_committed_msg\x18\x05 \x01(\x08\x12\x1a\n\x12\x63ommit_burst_delay\x18\x06 \x01(\x05\x12\x18\n\x10max_commit_burst\x18\x07 \x01(\x05\x12\x15\n\rin_production\x18\x08 \x01(\x08\x12\x1b\n\x08rietveld\x18\t \x01(\x0b\x32\t.Rietveld\x12\x17\n\x06gerrit\x18\x0f \x01(\x0b\x32\x07.Gerrit\x12\x14\n\x0cgit_repo_url\x18\n \x01(\t\x12\x12\n\ntarget_ref\x18\x0b \x01(\t\x12\x14\n\x0csvn_repo_url\x18\x0c \x01(\t\x12\x1b\n\x13\x64raining_start_time\x18\r \x01(\t\".\n\x08Rietveld\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x15\n\rproject_bases\x18\x02 \x03(\t\"#\n\x06Gerrit\x12\x19\n\x11\x63q_verified_label\x18\x01 \x01(\t\"\xf3\x06\n\tVerifiers\x12\x36\n\rreviewer_lgtm\x18\x01 \x01(\x0b\x32\x1f.Verifiers.ReviewerLgtmVerifier\x12\x36\n\x0btree_status\x18\x02 \x01(\x0b\x32!.Verifiers.TreeStatusLgtmVerifier\x12*\n\x07try_job\x18\x03 \x01(\x0b\x32\x19.Verifiers.TryJobVerifier\x12,\n\x08sign_cla\x18\x04 \x01(\x0b\x32\x1a.Verifiers.SignCLAVerifier\x1aw\n\x14ReviewerLgtmVerifier\x12\x16\n\x0e\x63ommitter_list\x18\x01 \x01(\t\x12\x15\n\rmax_wait_secs\x18\x02 \x01(\x05\x12\x13\n\x0bno_lgtm_msg\x18\x03 \x01(\t\x12\x1b\n\x13\x64ry_run_access_list\x18\x04 \x01(\t\x1a\x31\n\x16TreeStatusLgtmVerifier\x12\x17\n\x0ftree_status_url\x18\x01 \x01(\t\x1a\xdc\x03\n\x0eTryJobVerifier\x12\x31\n\x07\x62uckets\x18\x01 \x03(\x0b\x32 .Verifiers.TryJobVerifier.Bucket\x12I\n\x14try_job_retry_config\x18\x02 \x01(\x0b\x32+.Verifiers.TryJobVerifier.TryJobRetryConfig\x1aL\n\x07\x42uilder\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0ctriggered_by\x18\x02 \x01(\t\x12\x1d\n\x15\x65xperiment_percentage\x18\x04 \x01(\x02\x1aK\n\x06\x42ucket\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x33\n\x08\x62uilders\x18\x02 \x03(\x0b\x32!.Verifiers.TryJobVerifier.Builder\x1a\xb0\x01\n\x11TryJobRetryConfig\x12\x1b\n\x13try_job_retry_quota\x18\x01 \x01(\x05\x12\x1a\n\x12global_retry_quota\x18\x02 \x01(\x05\x12\x1c\n\x14\x66\x61ilure_retry_weight\x18\x03 \x01(\x05\x12&\n\x1etransient_failure_retry_weight\x18\x04 \x01(\x05\x12\x1c\n\x14timeout_retry_weight\x18\x05 \x01(\x05\x1a\x11\n\x0fSignCLAVerifier') serialized_pb=_b('\n\x08\x63q.proto\"\xeb\x02\n\x06\x43onfig\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x0f\n\x07\x63q_name\x18\x02 \x01(\t\x12\x1d\n\tverifiers\x18\x03 \x01(\x0b\x32\n.Verifiers\x12\x15\n\rcq_status_url\x18\x04 \x01(\t\x12%\n\x19hide_ref_in_committed_msg\x18\x05 \x01(\x08\x42\x02\x18\x01\x12\x1a\n\x12\x63ommit_burst_delay\x18\x06 \x01(\x05\x12\x18\n\x10max_commit_burst\x18\x07 \x01(\x05\x12\x15\n\rin_production\x18\x08 \x01(\x08\x12\x1b\n\x08rietveld\x18\t \x01(\x0b\x32\t.Rietveld\x12\x17\n\x06gerrit\x18\x0f \x01(\x0b\x32\x07.Gerrit\x12\x14\n\x0cgit_repo_url\x18\n \x01(\t\x12\x12\n\ntarget_ref\x18\x0b \x01(\t\x12\x18\n\x0csvn_repo_url\x18\x0c \x01(\tB\x02\x18\x01\x12\x1b\n\x13\x64raining_start_time\x18\r \x01(\t\".\n\x08Rietveld\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x15\n\rproject_bases\x18\x02 \x03(\t\"K\n\x06Gerrit\x12\x19\n\x11\x63q_verified_label\x18\x01 \x01(\t\x12&\n\x1e\x64ry_run_sets_cq_verified_label\x18\x02 \x01(\x08\"\xf3\x06\n\tVerifiers\x12\x36\n\rreviewer_lgtm\x18\x01 \x01(\x0b\x32\x1f.Verifiers.ReviewerLgtmVerifier\x12\x36\n\x0btree_status\x18\x02 \x01(\x0b\x32!.Verifiers.TreeStatusLgtmVerifier\x12*\n\x07try_job\x18\x03 \x01(\x0b\x32\x19.Verifiers.TryJobVerifier\x12,\n\x08sign_cla\x18\x04 \x01(\x0b\x32\x1a.Verifiers.SignCLAVerifier\x1aw\n\x14ReviewerLgtmVerifier\x12\x16\n\x0e\x63ommitter_list\x18\x01 \x01(\t\x12\x15\n\rmax_wait_secs\x18\x02 \x01(\x05\x12\x13\n\x0bno_lgtm_msg\x18\x03 \x01(\t\x12\x1b\n\x13\x64ry_run_access_list\x18\x04 \x01(\t\x1a\x31\n\x16TreeStatusLgtmVerifier\x12\x17\n\x0ftree_status_url\x18\x01 \x01(\t\x1a\xdc\x03\n\x0eTryJobVerifier\x12\x31\n\x07\x62uckets\x18\x01 \x03(\x0b\x32 .Verifiers.TryJobVerifier.Bucket\x12I\n\x14try_job_retry_config\x18\x02 \x01(\x0b\x32+.Verifiers.TryJobVerifier.TryJobRetryConfig\x1aL\n\x07\x42uilder\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0ctriggered_by\x18\x02 \x01(\t\x12\x1d\n\x15\x65xperiment_percentage\x18\x04 \x01(\x02\x1aK\n\x06\x42ucket\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x33\n\x08\x62uilders\x18\x02 \x03(\x0b\x32!.Verifiers.TryJobVerifier.Builder\x1a\xb0\x01\n\x11TryJobRetryConfig\x12\x1b\n\x13try_job_retry_quota\x18\x01 \x01(\x05\x12\x1a\n\x12global_retry_quota\x18\x02 \x01(\x05\x12\x1c\n\x14\x66\x61ilure_retry_weight\x18\x03 \x01(\x05\x12&\n\x1etransient_failure_retry_weight\x18\x04 \x01(\x05\x12\x1c\n\x14timeout_retry_weight\x18\x05 \x01(\x05\x1a\x11\n\x0fSignCLAVerifier')
) )
_sym_db.RegisterFileDescriptor(DESCRIPTOR) _sym_db.RegisterFileDescriptor(DESCRIPTOR)
@ -74,7 +74,7 @@ _CONFIG = _descriptor.Descriptor(
has_default_value=False, default_value=False, has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None, message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None, is_extension=False, extension_scope=None,
options=None), options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
_descriptor.FieldDescriptor( _descriptor.FieldDescriptor(
name='commit_burst_delay', full_name='Config.commit_burst_delay', index=5, name='commit_burst_delay', full_name='Config.commit_burst_delay', index=5,
number=6, type=5, cpp_type=1, label=1, number=6, type=5, cpp_type=1, label=1,
@ -130,7 +130,7 @@ _CONFIG = _descriptor.Descriptor(
has_default_value=False, default_value=_b("").decode('utf-8'), has_default_value=False, default_value=_b("").decode('utf-8'),
message_type=None, enum_type=None, containing_type=None, message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None, is_extension=False, extension_scope=None,
options=None), options=_descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))),
_descriptor.FieldDescriptor( _descriptor.FieldDescriptor(
name='draining_start_time', full_name='Config.draining_start_time', index=13, name='draining_start_time', full_name='Config.draining_start_time', index=13,
number=13, type=9, cpp_type=9, label=1, number=13, type=9, cpp_type=9, label=1,
@ -150,7 +150,7 @@ _CONFIG = _descriptor.Descriptor(
oneofs=[ oneofs=[
], ],
serialized_start=13, serialized_start=13,
serialized_end=368, serialized_end=376,
) )
@ -186,8 +186,8 @@ _RIETVELD = _descriptor.Descriptor(
extension_ranges=[], extension_ranges=[],
oneofs=[ oneofs=[
], ],
serialized_start=370, serialized_start=378,
serialized_end=416, serialized_end=424,
) )
@ -205,6 +205,13 @@ _GERRIT = _descriptor.Descriptor(
message_type=None, enum_type=None, containing_type=None, message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None, is_extension=False, extension_scope=None,
options=None), options=None),
_descriptor.FieldDescriptor(
name='dry_run_sets_cq_verified_label', full_name='Gerrit.dry_run_sets_cq_verified_label', index=1,
number=2, type=8, cpp_type=7, label=1,
has_default_value=False, default_value=False,
message_type=None, enum_type=None, containing_type=None,
is_extension=False, extension_scope=None,
options=None),
], ],
extensions=[ extensions=[
], ],
@ -216,8 +223,8 @@ _GERRIT = _descriptor.Descriptor(
extension_ranges=[], extension_ranges=[],
oneofs=[ oneofs=[
], ],
serialized_start=418, serialized_start=426,
serialized_end=453, serialized_end=501,
) )
@ -267,8 +274,8 @@ _VERIFIERS_REVIEWERLGTMVERIFIER = _descriptor.Descriptor(
extension_ranges=[], extension_ranges=[],
oneofs=[ oneofs=[
], ],
serialized_start=671, serialized_start=719,
serialized_end=790, serialized_end=838,
) )
_VERIFIERS_TREESTATUSLGTMVERIFIER = _descriptor.Descriptor( _VERIFIERS_TREESTATUSLGTMVERIFIER = _descriptor.Descriptor(
@ -296,8 +303,8 @@ _VERIFIERS_TREESTATUSLGTMVERIFIER = _descriptor.Descriptor(
extension_ranges=[], extension_ranges=[],
oneofs=[ oneofs=[
], ],
serialized_start=792, serialized_start=840,
serialized_end=841, serialized_end=889,
) )
_VERIFIERS_TRYJOBVERIFIER_BUILDER = _descriptor.Descriptor( _VERIFIERS_TRYJOBVERIFIER_BUILDER = _descriptor.Descriptor(
@ -339,8 +346,8 @@ _VERIFIERS_TRYJOBVERIFIER_BUILDER = _descriptor.Descriptor(
extension_ranges=[], extension_ranges=[],
oneofs=[ oneofs=[
], ],
serialized_start=988, serialized_start=1036,
serialized_end=1064, serialized_end=1112,
) )
_VERIFIERS_TRYJOBVERIFIER_BUCKET = _descriptor.Descriptor( _VERIFIERS_TRYJOBVERIFIER_BUCKET = _descriptor.Descriptor(
@ -375,8 +382,8 @@ _VERIFIERS_TRYJOBVERIFIER_BUCKET = _descriptor.Descriptor(
extension_ranges=[], extension_ranges=[],
oneofs=[ oneofs=[
], ],
serialized_start=1066, serialized_start=1114,
serialized_end=1141, serialized_end=1189,
) )
_VERIFIERS_TRYJOBVERIFIER_TRYJOBRETRYCONFIG = _descriptor.Descriptor( _VERIFIERS_TRYJOBVERIFIER_TRYJOBRETRYCONFIG = _descriptor.Descriptor(
@ -432,8 +439,8 @@ _VERIFIERS_TRYJOBVERIFIER_TRYJOBRETRYCONFIG = _descriptor.Descriptor(
extension_ranges=[], extension_ranges=[],
oneofs=[ oneofs=[
], ],
serialized_start=1144, serialized_start=1192,
serialized_end=1320, serialized_end=1368,
) )
_VERIFIERS_TRYJOBVERIFIER = _descriptor.Descriptor( _VERIFIERS_TRYJOBVERIFIER = _descriptor.Descriptor(
@ -468,8 +475,8 @@ _VERIFIERS_TRYJOBVERIFIER = _descriptor.Descriptor(
extension_ranges=[], extension_ranges=[],
oneofs=[ oneofs=[
], ],
serialized_start=844, serialized_start=892,
serialized_end=1320, serialized_end=1368,
) )
_VERIFIERS_SIGNCLAVERIFIER = _descriptor.Descriptor( _VERIFIERS_SIGNCLAVERIFIER = _descriptor.Descriptor(
@ -490,8 +497,8 @@ _VERIFIERS_SIGNCLAVERIFIER = _descriptor.Descriptor(
extension_ranges=[], extension_ranges=[],
oneofs=[ oneofs=[
], ],
serialized_start=1322, serialized_start=1370,
serialized_end=1339, serialized_end=1387,
) )
_VERIFIERS = _descriptor.Descriptor( _VERIFIERS = _descriptor.Descriptor(
@ -540,8 +547,8 @@ _VERIFIERS = _descriptor.Descriptor(
extension_ranges=[], extension_ranges=[],
oneofs=[ oneofs=[
], ],
serialized_start=456, serialized_start=504,
serialized_end=1339, serialized_end=1387,
) )
_CONFIG.fields_by_name['verifiers'].message_type = _VERIFIERS _CONFIG.fields_by_name['verifiers'].message_type = _VERIFIERS
@ -651,4 +658,8 @@ _sym_db.RegisterMessage(Verifiers.TryJobVerifier.TryJobRetryConfig)
_sym_db.RegisterMessage(Verifiers.SignCLAVerifier) _sym_db.RegisterMessage(Verifiers.SignCLAVerifier)
_CONFIG.fields_by_name['hide_ref_in_committed_msg'].has_options = True
_CONFIG.fields_by_name['hide_ref_in_committed_msg']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
_CONFIG.fields_by_name['svn_repo_url'].has_options = True
_CONFIG.fields_by_name['svn_repo_url']._options = _descriptor._ParseOptions(descriptor_pb2.FieldOptions(), _b('\030\001'))
# @@protoc_insertion_point(module_scope) # @@protoc_insertion_point(module_scope)

@ -0,0 +1,68 @@
version: 1
cq_name: "infra"
cq_status_url: "https://chromium-cq-status.appspot.com"
commit_burst_delay: 600
max_commit_burst: 10
in_production: false
git_repo_url: "http://chromium.googlesource.com/infra/infra.git"
target_ref: "refs/pending/heads/master"
rietveld {
url: "https://codereview.chromium.org"
}
gerrit {
cq_verified_label: "Commit-Queue-Verified"
}
verifiers {
# This verifier is not supported in Gerrit, and is just ignored.
reviewer_lgtm: {
committer_list: "project-chromium-committers"
dry_run_access_list: "project-chromium-tryjob-access"
max_wait_secs: 600
no_lgtm_msg: "LGTM is missing"
}
tree_status: {
tree_status_url: "https://infra-status.appspot.com"
}
try_job {
buckets {
name: "tryserver.blink"
builders { name: "android_blink_compile_dbg" }
builders { name: "android_blink_compile_rel" }
builders { name: "win_blink_rel" }
builders {
name: "win_blink_rel_triggered"
triggered_by: "win_blink_rel"
}
}
buckets {
name: "tryserver.chromium.linux"
builders {
name: "android_arm64_dbg_recipe"
}
builders {
name: "linux_chromium_rel_ng"
experiment_percentage: 10
}
}
buckets {
name: "tryserver.chromium.mac"
builders {
name: "ios_dbg_simulator_ninja"
experiment_percentage: 100
}
}
try_job_retry_config {
try_job_retry_quota: 10
global_retry_quota: 11
failure_retry_weight: 12
transient_failure_retry_weight: 13
}
}
}

@ -1,7 +1,6 @@
version: 1 version: 1
cq_name: "infra" cq_name: "infra"
cq_status_url: "https://chromium-cq-status.appspot.com" cq_status_url: "https://chromium-cq-status.appspot.com"
hide_ref_in_committed_msg: true
commit_burst_delay: 600 commit_burst_delay: 600
max_commit_burst: 10 max_commit_burst: 10
in_production: false in_production: false
@ -10,6 +9,7 @@ target_ref: "refs/pending/heads/master"
gerrit { gerrit {
cq_verified_label: "Commit-Queue-Verified" cq_verified_label: "Commit-Queue-Verified"
dry_run_sets_cq_verified_label: true
} }
verifiers { verifiers {

@ -1,7 +1,6 @@
version: 1 version: 1
cq_name: "infra" cq_name: "infra"
cq_status_url: "https://chromium-cq-status.appspot.com" cq_status_url: "https://chromium-cq-status.appspot.com"
hide_ref_in_committed_msg: true
commit_burst_delay: 600 commit_burst_delay: 600
max_commit_burst: 10 max_commit_burst: 10
in_production: false in_production: false
@ -10,7 +9,6 @@ target_ref: "refs/pending/heads/master"
rietveld { rietveld {
url: "https://codereview.chromium.org" url: "https://codereview.chromium.org"
project_bases: "https://chromium.googlesource.com/infra/infra.git@master"
} }
verifiers { verifiers {

Loading…
Cancel
Save