blob: d42a03d1eafec4da2ff777afa72ed1f1ead1a324 [file] [log] [blame]
// 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.
// Schemas for project configs.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.26.0
// protoc v3.17.0
// source: go.chromium.org/luci/buildbucket/proto/project_config.proto
package buildbucketpb
import (
_ "go.chromium.org/luci/common/proto"
v1 "go.chromium.org/luci/resultdb/proto/v1"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
durationpb "google.golang.org/protobuf/types/known/durationpb"
wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Toggle is a boolean with an extra state UNSET.
// When protobuf messages are merged, UNSET does not overwrite an existing
// value.
// TODO(nodir): replace with Trinary in ../common.proto.
type Toggle int32
const (
Toggle_UNSET Toggle = 0
Toggle_YES Toggle = 1
Toggle_NO Toggle = 2
)
// Enum value maps for Toggle.
var (
Toggle_name = map[int32]string{
0: "UNSET",
1: "YES",
2: "NO",
}
Toggle_value = map[string]int32{
"UNSET": 0,
"YES": 1,
"NO": 2,
}
)
func (x Toggle) Enum() *Toggle {
p := new(Toggle)
*p = x
return p
}
func (x Toggle) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Toggle) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes[0].Descriptor()
}
func (Toggle) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes[0]
}
func (x Toggle) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Toggle.Descriptor instead.
func (Toggle) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{0}
}
// A buildbucket user role.
// Defines what a user can do.
//
// The order of enum member tags is important.
// A role with a higher tag number can perform any action that a role with a
// lower tag number can perform.
type Acl_Role int32
const (
// Can do read-only operations, such as search for builds.
Acl_READER Acl_Role = 0
// Same as READER + can schedule and cancel builds.
Acl_SCHEDULER Acl_Role = 1
// Can do all write operations.
Acl_WRITER Acl_Role = 2
)
// Enum value maps for Acl_Role.
var (
Acl_Role_name = map[int32]string{
0: "READER",
1: "SCHEDULER",
2: "WRITER",
}
Acl_Role_value = map[string]int32{
"READER": 0,
"SCHEDULER": 1,
"WRITER": 2,
}
)
func (x Acl_Role) Enum() *Acl_Role {
p := new(Acl_Role)
*p = x
return p
}
func (x Acl_Role) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (Acl_Role) Descriptor() protoreflect.EnumDescriptor {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes[1].Descriptor()
}
func (Acl_Role) Type() protoreflect.EnumType {
return &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes[1]
}
func (x Acl_Role) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use Acl_Role.Descriptor instead.
func (Acl_Role) EnumDescriptor() ([]byte, []int) {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{0, 0}
}
// A single access control rule.
type Acl struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Role denotes a list of actions that an identity can perform.
Role Acl_Role `protobuf:"varint,1,opt,name=role,proto3,enum=buildbucket.Acl_Role" json:"role,omitempty"`
// Name of the group defined in the auth service.
Group string `protobuf:"bytes,2,opt,name=group,proto3" json:"group,omitempty"`
// An email address or a full identity string "kind:name". See auth service
// on kinds of identities. Anonymous users are "anonymous:anonymous".
// Either identity or group must be present, not both.
Identity string `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"`
}
func (x *Acl) Reset() {
*x = Acl{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Acl) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Acl) ProtoMessage() {}
func (x *Acl) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Acl.ProtoReflect.Descriptor instead.
func (*Acl) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{0}
}
func (x *Acl) GetRole() Acl_Role {
if x != nil {
return x.Role
}
return Acl_READER
}
func (x *Acl) GetGroup() string {
if x != nil {
return x.Group
}
return ""
}
func (x *Acl) GetIdentity() string {
if x != nil {
return x.Identity
}
return ""
}
// A set of Acl messages. Can be referenced in a bucket by name.
type AclSet struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// A name of the ACL set. Required. Must match regex '^[a-z0-9_]+$'.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// List of access control rules.
// The order does not matter.
Acls []*Acl `protobuf:"bytes,2,rep,name=acls,proto3" json:"acls,omitempty"`
}
func (x *AclSet) Reset() {
*x = AclSet{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AclSet) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AclSet) ProtoMessage() {}
func (x *AclSet) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AclSet.ProtoReflect.Descriptor instead.
func (*AclSet) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{1}
}
func (x *AclSet) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *AclSet) GetAcls() []*Acl {
if x != nil {
return x.Acls
}
return nil
}
// Defines a swarmbucket builder or a builder mixin. A builder has a name, a
// category and specifies what should happen if a build is scheduled to that
// builder.
//
// SECURITY WARNING: if adding more fields to this message, keep in mind that
// a user that has permissions to schedule a build to the bucket, can override
// this config.
//
// Next tag: 32.
type Builder struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the builder or builder mixin.
//
// If a builder name, will be propagated to "builder" build tag and
// "buildername" recipe property.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Hostname of the swarming instance, e.g. "chromium-swarm.appspot.com".
// Required, but defaults to deprecated Swarming.hostname.
SwarmingHost string `protobuf:"bytes,21,opt,name=swarming_host,json=swarmingHost,proto3" json:"swarming_host,omitempty"`
// Names of mixins to apply to this builder definition.
//
// FLATTENING
//
// Final builder/mixin values are computed as follows:
// - start with an empty builder definition.
// - if this is a builder, apply values in a bucket's builder_defaults,
// flattened in advance.
// - apply each mixin, flattened in advance, in the same order.
// - apply values in this builder/mixin.
//
// EXAMPLE
//
// A definition
//
// builder_mixins {
// name: "foo"
// dimensions: "os:Linux"
// dimensions: "cpu:x86"
// recipe {
// repository: "https://example.com"
// name: "x"
// }
// }
// builder_mixins {
// name: "bar"
// dimensions: "cores:8"
// dimensions: "cpu:x86-64"
// }
// bucket {
// name: "luci.x.try"
// swarming {
// builders {
// name: "release"
// mixins: "foo"
// mixins: "bar"
// recipe {
// name: "y"
// }
// }
// }
// }
//
// is equivalent to
//
// bucket {
// name: "luci.x.try"
// swarming {
// builders {
// name: "release"
// dimensions: "os:Linux"
// dimensions: "cpu:x86-64"
// dimensions: "cores:8"
// recipe {
// repository: "https://example.com"
// name: "y"
// }
// }
// }
// }
//
// A NOTE ON DIAMOND MERGES
//
// Given
// B mixes in A and overrides some values defined in A
// C mixes in A
// D mixes in B and C
// B's overrides won't affect D because D mixes in C after B.
//
// builder_mixins {
// name: "A"
// dimensions: "dim:a"
// }
// builder_mixins {
// name: "B"
// mixins: "A"
// dimensions: "dim:b"
// }
// builder_mixins {
// name: "C"
// mixins: "A"
// }
// ...
// builders {
// name: "D"
// mixins: "B"
// mixins: "C"
// }
//
// D's dim will be "a", not "b" because it is "a" in C which is applied after
// B.
//
// OTHER
//
// Circular references are prohibited.
Mixins []string `protobuf:"bytes,10,rep,name=mixins,proto3" json:"mixins,omitempty"`
// Builder category. Will be used for visual grouping, for example in Code Review.
Category string `protobuf:"bytes,6,opt,name=category,proto3" json:"category,omitempty"`
// DEPRECATED.
// Used only to enable "vpython:native-python-wrapper"
// Does NOT actually propagate to swarming.
SwarmingTags []string `protobuf:"bytes,2,rep,name=swarming_tags,json=swarmingTags,proto3" json:"swarming_tags,omitempty"`
// A requirement for a bot to execute the build.
//
// Supports 3 forms:
// - "<key>:" - exclude the defaults for the key.
// Mutually exclusive with other forms.
// - "<key>:<value>" - require a bot with this dimension.
// This is a shortcut for "0:<key>:<value>", see below.
// - "<expiration_secs>:<key>:<value>" - wait for up to expiration_secs.
// for a bot with the dimension.
// Supports multiple values for different keys and expiration_secs.
// expiration_secs must be a multiple of 60.
//
// When merging a set of dimensions S1 into S2, all dimensions in S1 with a
// key K replace all dimensions in S2 with K. This logic is used when applying
// builder mixins and dimensions specified in a build request.
//
// If this builder is defined in a bucket, dimension "pool" is defaulted
// to the name of the bucket. See Bucket message below.
Dimensions []string `protobuf:"bytes,3,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
// Specifies that a recipe to run.
// DEPRECATED: use exe.
Recipe *Builder_Recipe `protobuf:"bytes,4,opt,name=recipe,proto3" json:"recipe,omitempty"`
// What to run when a build is ready to start.
Exe *Executable `protobuf:"bytes,23,opt,name=exe,proto3" json:"exe,omitempty"`
// A JSON object representing Build.input.properties.
// Individual object properties can be overridden with
// ScheduleBuildRequest.properties.
Properties string `protobuf:"bytes,24,opt,name=properties,proto3" json:"properties,omitempty"`
// Swarming task priority.
// A value between 20 and 255, inclusive.
// Lower means more important.
//
// The default value is configured in
// https://chrome-internal.googlesource.com/infradata/config/+/master/configs/cr-buildbucket/swarming_task_template.json
//
// See also https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/doc/User-Guide.md#request
Priority uint32 `protobuf:"varint,5,opt,name=priority,proto3" json:"priority,omitempty"`
// Maximum build execution time.
//
// Not to be confused with pending time.
//
// If the timeout is reached, the task will be signaled according to the
// `deadline` section of
// https://chromium.googlesource.com/infra/luci/luci-py/+/HEAD/client/LUCI_CONTEXT.md
// and status_details.timeout is set.
//
// The task will have `grace_period` amount of time to handle cleanup
// before being forcefully terminated.
//
// NOTE: This corresponds with Build.execution_timeout and
// ScheduleBuildRequest.execution_timeout; The name `execution_timeout_secs` and
// uint32 type are relics of the past.
ExecutionTimeoutSecs uint32 `protobuf:"varint,7,opt,name=execution_timeout_secs,json=executionTimeoutSecs,proto3" json:"execution_timeout_secs,omitempty"`
// Maximum build pending time.
//
// If the timeout is reached, the build is marked as INFRA_FAILURE status
// and both status_details.{timeout, resource_exhaustion} are set.
//
// NOTE: This corresponds with Build.scheduling_timeout and
// ScheduleBuildRequest.scheduling_timeout; The name `expiration_secs` and
// uint32 type are relics of the past.
ExpirationSecs uint32 `protobuf:"varint,20,opt,name=expiration_secs,json=expirationSecs,proto3" json:"expiration_secs,omitempty"`
// Amount of cleanup time after execution_timeout_secs.
//
// After being signaled according to execution_timeout_secs, the task will
// have this many seconds to clean up before being forcefully terminated.
//
// The signalling process is explained in the `deadline` section of
// https://chromium.googlesource.com/infra/luci/luci-py/+/HEAD/client/LUCI_CONTEXT.md.
//
// Defaults to 30s if unspecified or 0.
GracePeriod *durationpb.Duration `protobuf:"bytes,31,opt,name=grace_period,json=gracePeriod,proto3" json:"grace_period,omitempty"`
// If YES, will request that swarming wait until it sees at least one bot
// report a superset of the requested dimensions.
//
// If UNSET/NO (the default), swarming will immediately reject a build which
// specifies a dimension set that it's never seen before.
//
// Usually you want this to be UNSET/NO, unless you know that some external
// system is working to add bots to swarming which will match the requested
// dimensions within expiration_secs. Otherwise you'll have to wait for all of
// `expiration_secs` until swarming tells you "Sorry, nothing has dimension
// `os:MadeUpOS`".
WaitForCapacity Trinary `protobuf:"varint,29,opt,name=wait_for_capacity,json=waitForCapacity,proto3,enum=buildbucket.v2.Trinary" json:"wait_for_capacity,omitempty"`
// Caches that should be present on the bot.
Caches []*Builder_CacheEntry `protobuf:"bytes,9,rep,name=caches,proto3" json:"caches,omitempty"`
// If YES, generate monotonically increasing contiguous numbers for each
// build, unique within the builder.
// Note: this limits the build creation rate in this builder to 5 per second.
BuildNumbers Toggle `protobuf:"varint,16,opt,name=build_numbers,json=buildNumbers,proto3,enum=buildbucket.Toggle" json:"build_numbers,omitempty"`
// Email of a service account to run the build as or literal 'bot' string to
// use Swarming bot's account (if available). Passed directly to Swarming.
// Subject to Swarming's ACLs.
ServiceAccount string `protobuf:"bytes,12,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
// If YES, each builder will get extra dimension "builder:<builder name>"
// added. Default is UNSET.
//
// For example, this config
//
// builder {
// name: "linux-compiler"
// dimension: "builder:linux-compiler"
// }
//
// is equivalent to this:
//
// builders {
// name: "linux-compiler"
// auto_builder_dimension: YES
// }
//
// We've considered providing interpolation like this
// builder_defaults {
// dimensions: "builder:${BUILDER}"
// }
// (see also http://docs.buildbot.net/0.8.9/manual/cfg-properties.html#interpolate)
// but are currently against complicating config with this.
AutoBuilderDimension Toggle `protobuf:"varint,17,opt,name=auto_builder_dimension,json=autoBuilderDimension,proto3,enum=buildbucket.Toggle" json:"auto_builder_dimension,omitempty"`
// DEPRECATED
//
// Set the "luci.non_production" experiment in the 'experiments' field below,
// instead.
//
// If YES, sets the "luci.non_production" experiment to 100% for
// builds on this builder.
//
// See the documentation on `experiments` for more details about the
// "luci.non_production" experiment.
Experimental Toggle `protobuf:"varint,18,opt,name=experimental,proto3,enum=buildbucket.Toggle" json:"experimental,omitempty"`
// DEPRECATED
//
// Set the "luci.buildbucket.canary_software" experiment in the 'experiments'
// field below, instead.
//
// Percentage of builds that should use a canary swarming task template.
// A value from 0 to 100.
// If omitted, a global server-defined default percentage is used.
TaskTemplateCanaryPercentage *wrapperspb.UInt32Value `protobuf:"bytes,22,opt,name=task_template_canary_percentage,json=taskTemplateCanaryPercentage,proto3" json:"task_template_canary_percentage,omitempty"`
// A mapping of experiment name to the percentage chance (0-100) that it will
// apply to builds generated from this builder. Experiments are simply strings
// which various parts of the stack (from LUCI services down to your build
// scripts) may react to in order to enable certain functionality.
//
// You may set any experiments you like, but experiments beginning with
// "luci." are reserved. Experiment names must conform to
//
// [a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*
//
// Any experiments which are selected for a build show up in
// `Build.input.experiments`.
//
// Its recommended that you confine your experiments to smaller, more explicit
// targets. For example, prefer the experiment named
// "my_project.use_mysoftware_v2_crbug_999999" rather than "use_next_gen".
//
// It is NOT recommended to 'piggy-back' on top of existing experiment names
// for a different purpose. However if you want to, you can have your build
// treat the presence of ANY experiment as equivalent to "luci.non_production"
// being set for your build (i.e. "if any experiment is set, don't affect
// production"). This is ulimately up to you, however.
//
// Well-known experiments
//
// # "luci.non_production" (default 0%)
// Builds with this experiment SHOULD NOT affect production resources. This
// means that they should e.g. skip uploads steps which send data to locations
// which would overlap with production uploads.
//
// This experiment does not directly affect the behavior of any LUCI services,
// but is set by some LUCI tools/systems (for example `led`). It is very
// coarse-grained, but is still useful to allow communication from
// higher-layer systems that the build in question shouldn't impact
// production.
//
// Although it's tempting to enable new functionality when this experiment is
// set, prefer to create your own experiment names for that purpose. For
// example:
//
// # Good
// upload_bucket = 'gs://production-binaries'
// if 'luci.non_production' in experiments:
// upload_bucket = 'gs://non-production-binaries'
//
// # Good
// if 'luci.non_production' not in experiments:
// official_results_service.report(stuff)
//
// # Bad
// if 'luci.non_production' in experiments:
// enable_wacky_new_functionality()
//
// # Instead
// if 'my_project.wacky_new_functionality' in experiments:
// enable_wacky_new_functionality()
//
// Currently maps to the "recipe_engine/runtime".is_experimental flag in
// recipes, though getting it directly from build.input.experiments is
// preferable.
//
// # "luci.buildbucket.canary_software" (default 10%)
// Builds with this experiment use the canary software versions listed in
// Buildbucket's service-wide `settings.cfg`.
//
// NOTE: There's a good argument for controlling each software package with
// its own experiment. However, in practice, we don't usually have more than
// one piece of software in canary at the same time. If we were designing this
// today, we would likely lean towards individual package control.
//
// # "luci.buildbucket.use_bbagent" (default currently 0%)
// Builds with this experiment will default to the new 'luciexe'-based
// protocol, rather than the deprecated '@@@annotation@@@' protocol.
//
// Over time we'll be moving the default up from 0%. Ideally we'll be removing
// the @@@annotation@@@ protocol entirely in 2021Q3.
//
// # "luci.use_realms" (default 0%)
// Opts the build into using LUCI realms for ACLs when communicating with
// Swarming.
//
// Requires configuration in your project (to set up realms, roles and
// permission grants). Makes Buildbucket's interaction with Swarming
// use realms, and will cause underlying swarming tasks to be in
// 'realms' mode.
//
// Does NOT effect Buildbucket's own ACL checks (e.g. who can trigger
// and see the build). They are controlled via
// `luci.project(..., enforce_realms_in=[...])` in your project's
// lucicfg configuration.
Experiments map[string]int32 `protobuf:"bytes,28,rep,name=experiments,proto3" json:"experiments,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
// This field will set the default value of the "critical" field of
// all the builds of this builder. Please refer to build.proto for
// the meaning of this field.
//
// This value can be overridden by ScheduleBuildRequest.critical
Critical Trinary `protobuf:"varint,25,opt,name=critical,proto3,enum=buildbucket.v2.Trinary" json:"critical,omitempty"`
// Used to enable and configure ResultDB integration.
Resultdb *Builder_ResultDB `protobuf:"bytes,26,opt,name=resultdb,proto3" json:"resultdb,omitempty"`
// Description that helps users understand the purpose of the builder, in
// HTML.
DescriptionHtml string `protobuf:"bytes,30,opt,name=description_html,json=descriptionHtml,proto3" json:"description_html,omitempty"`
}
func (x *Builder) Reset() {
*x = Builder{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Builder) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Builder) ProtoMessage() {}
func (x *Builder) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Builder.ProtoReflect.Descriptor instead.
func (*Builder) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{2}
}
func (x *Builder) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Builder) GetSwarmingHost() string {
if x != nil {
return x.SwarmingHost
}
return ""
}
func (x *Builder) GetMixins() []string {
if x != nil {
return x.Mixins
}
return nil
}
func (x *Builder) GetCategory() string {
if x != nil {
return x.Category
}
return ""
}
func (x *Builder) GetSwarmingTags() []string {
if x != nil {
return x.SwarmingTags
}
return nil
}
func (x *Builder) GetDimensions() []string {
if x != nil {
return x.Dimensions
}
return nil
}
func (x *Builder) GetRecipe() *Builder_Recipe {
if x != nil {
return x.Recipe
}
return nil
}
func (x *Builder) GetExe() *Executable {
if x != nil {
return x.Exe
}
return nil
}
func (x *Builder) GetProperties() string {
if x != nil {
return x.Properties
}
return ""
}
func (x *Builder) GetPriority() uint32 {
if x != nil {
return x.Priority
}
return 0
}
func (x *Builder) GetExecutionTimeoutSecs() uint32 {
if x != nil {
return x.ExecutionTimeoutSecs
}
return 0
}
func (x *Builder) GetExpirationSecs() uint32 {
if x != nil {
return x.ExpirationSecs
}
return 0
}
func (x *Builder) GetGracePeriod() *durationpb.Duration {
if x != nil {
return x.GracePeriod
}
return nil
}
func (x *Builder) GetWaitForCapacity() Trinary {
if x != nil {
return x.WaitForCapacity
}
return Trinary_UNSET
}
func (x *Builder) GetCaches() []*Builder_CacheEntry {
if x != nil {
return x.Caches
}
return nil
}
func (x *Builder) GetBuildNumbers() Toggle {
if x != nil {
return x.BuildNumbers
}
return Toggle_UNSET
}
func (x *Builder) GetServiceAccount() string {
if x != nil {
return x.ServiceAccount
}
return ""
}
func (x *Builder) GetAutoBuilderDimension() Toggle {
if x != nil {
return x.AutoBuilderDimension
}
return Toggle_UNSET
}
func (x *Builder) GetExperimental() Toggle {
if x != nil {
return x.Experimental
}
return Toggle_UNSET
}
func (x *Builder) GetTaskTemplateCanaryPercentage() *wrapperspb.UInt32Value {
if x != nil {
return x.TaskTemplateCanaryPercentage
}
return nil
}
func (x *Builder) GetExperiments() map[string]int32 {
if x != nil {
return x.Experiments
}
return nil
}
func (x *Builder) GetCritical() Trinary {
if x != nil {
return x.Critical
}
return Trinary_UNSET
}
func (x *Builder) GetResultdb() *Builder_ResultDB {
if x != nil {
return x.Resultdb
}
return nil
}
func (x *Builder) GetDescriptionHtml() string {
if x != nil {
return x.DescriptionHtml
}
return ""
}
// Configuration of buildbucket-swarming integration for one bucket.
type Swarming struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// DEPRECATED. Use builder_defaults.swarming_host instead.
// Setting this fields sets builder_defaults.swarming_host.
Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
// DEPRECATED, IGNORED.
// Used to generate a URL for Build, may contain parameters
// {swarming_hostname}, {task_id}, {bucket} and {builder}. Defaults to:
// https://{swarming_hostname}/user/task/{task_id}
UrlFormat string `protobuf:"bytes,2,opt,name=url_format,json=urlFormat,proto3" json:"url_format,omitempty"`
// Defines default values for builders.
BuilderDefaults *Builder `protobuf:"bytes,3,opt,name=builder_defaults,json=builderDefaults,proto3" json:"builder_defaults,omitempty"`
// Configuration for each builder.
// Swarming tasks are created only for builds for builders that are not
// explicitly specified.
Builders []*Builder `protobuf:"bytes,4,rep,name=builders,proto3" json:"builders,omitempty"`
// DEPRECATED. Use builder_defaults.task_template_canary_percentage instead.
// Setting this field sets builder_defaults.task_template_canary_percentage.
TaskTemplateCanaryPercentage *wrapperspb.UInt32Value `protobuf:"bytes,5,opt,name=task_template_canary_percentage,json=taskTemplateCanaryPercentage,proto3" json:"task_template_canary_percentage,omitempty"`
}
func (x *Swarming) Reset() {
*x = Swarming{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Swarming) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Swarming) ProtoMessage() {}
func (x *Swarming) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Swarming.ProtoReflect.Descriptor instead.
func (*Swarming) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{3}
}
func (x *Swarming) GetHostname() string {
if x != nil {
return x.Hostname
}
return ""
}
func (x *Swarming) GetUrlFormat() string {
if x != nil {
return x.UrlFormat
}
return ""
}
func (x *Swarming) GetBuilderDefaults() *Builder {
if x != nil {
return x.BuilderDefaults
}
return nil
}
func (x *Swarming) GetBuilders() []*Builder {
if x != nil {
return x.Builders
}
return nil
}
func (x *Swarming) GetTaskTemplateCanaryPercentage() *wrapperspb.UInt32Value {
if x != nil {
return x.TaskTemplateCanaryPercentage
}
return nil
}
// Defines one bucket in buildbucket.cfg
type Bucket struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the bucket. Names are unique within one instance of buildbucket.
// If another project already uses this name, a config will be rejected.
// Name reservation is first-come first-serve.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// List of access control rules for the bucket.
// The order does not matter.
Acls []*Acl `protobuf:"bytes,2,rep,name=acls,proto3" json:"acls,omitempty"`
// A list of ACL set names. Each ACL in each referenced ACL set will be
// included in this bucket.
// The order does not matter.
AclSets []string `protobuf:"bytes,4,rep,name=acl_sets,json=aclSets,proto3" json:"acl_sets,omitempty"`
// Buildbucket-swarming integration.
Swarming *Swarming `protobuf:"bytes,3,opt,name=swarming,proto3" json:"swarming,omitempty"`
}
func (x *Bucket) Reset() {
*x = Bucket{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Bucket) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Bucket) ProtoMessage() {}
func (x *Bucket) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Bucket.ProtoReflect.Descriptor instead.
func (*Bucket) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{4}
}
func (x *Bucket) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Bucket) GetAcls() []*Acl {
if x != nil {
return x.Acls
}
return nil
}
func (x *Bucket) GetAclSets() []string {
if x != nil {
return x.AclSets
}
return nil
}
func (x *Bucket) GetSwarming() *Swarming {
if x != nil {
return x.Swarming
}
return nil
}
// Schema of buildbucket.cfg file, a project config.
type BuildbucketCfg struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// All buckets defined for this project.
Buckets []*Bucket `protobuf:"bytes,1,rep,name=buckets,proto3" json:"buckets,omitempty"`
// A list of ACL sets. Names must be unique.
AclSets []*AclSet `protobuf:"bytes,2,rep,name=acl_sets,json=aclSets,proto3" json:"acl_sets,omitempty"`
// A list of builder mixin definitions.
// A mixin can be referenced in any builder defined within the BuildbucketCfg.
// See also Buider.mixins field.
BuilderMixins []*Builder `protobuf:"bytes,3,rep,name=builder_mixins,json=builderMixins,proto3" json:"builder_mixins,omitempty"`
}
func (x *BuildbucketCfg) Reset() {
*x = BuildbucketCfg{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *BuildbucketCfg) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BuildbucketCfg) ProtoMessage() {}
func (x *BuildbucketCfg) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BuildbucketCfg.ProtoReflect.Descriptor instead.
func (*BuildbucketCfg) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{5}
}
func (x *BuildbucketCfg) GetBuckets() []*Bucket {
if x != nil {
return x.Buckets
}
return nil
}
func (x *BuildbucketCfg) GetAclSets() []*AclSet {
if x != nil {
return x.AclSets
}
return nil
}
func (x *BuildbucketCfg) GetBuilderMixins() []*Builder {
if x != nil {
return x.BuilderMixins
}
return nil
}
// Describes a cache directory persisted on a bot.
// Prerequisite reading in BuildInfra.Swarming.CacheEntry message in
// build.proto.
//
// To share a builder cache among multiple builders, it can be overridden:
//
// builders {
// name: "a"
// caches {
// path: "builder"
// name: "my_shared_cache"
// }
// }
// builders {
// name: "b"
// caches {
// path: "builder"
// name: "my_shared_cache"
// }
// }
//
// Builders "a" and "b" share their builder cache. If an "a" build ran on a
// bot and left some files in the builder cache and then a "b" build runs on
// the same bot, the same files will be available in the builder cache.
type Builder_CacheEntry struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Identifier of the cache. Length is limited to 128.
// Defaults to path.
// See also BuildInfra.Swarming.CacheEntry.name in build.proto.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Relative path where the cache in mapped into. Required.
// See also BuildInfra.Swarming.CacheEntry.path in build.proto.
Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
// Number of seconds to wait for a bot with a warm cache to pick up the
// task, before falling back to a bot with a cold (non-existent) cache.
// See also BuildInfra.Swarming.CacheEntry.wait_for_warm_cache in build.proto.
// The value must be multiples of 60 seconds.
WaitForWarmCacheSecs int32 `protobuf:"varint,3,opt,name=wait_for_warm_cache_secs,json=waitForWarmCacheSecs,proto3" json:"wait_for_warm_cache_secs,omitempty"`
// Environment variable with this name will be set to the path to the cache
// directory.
EnvVar string `protobuf:"bytes,4,opt,name=env_var,json=envVar,proto3" json:"env_var,omitempty"`
}
func (x *Builder_CacheEntry) Reset() {
*x = Builder_CacheEntry{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Builder_CacheEntry) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Builder_CacheEntry) ProtoMessage() {}
func (x *Builder_CacheEntry) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Builder_CacheEntry.ProtoReflect.Descriptor instead.
func (*Builder_CacheEntry) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{2, 0}
}
func (x *Builder_CacheEntry) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Builder_CacheEntry) GetPath() string {
if x != nil {
return x.Path
}
return ""
}
func (x *Builder_CacheEntry) GetWaitForWarmCacheSecs() int32 {
if x != nil {
return x.WaitForWarmCacheSecs
}
return 0
}
func (x *Builder_CacheEntry) GetEnvVar() string {
if x != nil {
return x.EnvVar
}
return ""
}
// DEPRECATED. See Builder.executable and Builder.properties
//
// To specify a recipe name, pass "$recipe_engine" property which is a JSON
// object having "recipe" property.
type Builder_Recipe struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the recipe to run.
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
// The CIPD package to fetch the recipes from.
//
// Typically the package will look like:
//
// infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build
//
// Recipes bundled from internal repositories are typically under
// `infra_internal/recipe_bundles/...`.
//
// But if you're building your own recipe bundles, they could be located
// elsewhere.
CipdPackage string `protobuf:"bytes,6,opt,name=cipd_package,json=cipdPackage,proto3" json:"cipd_package,omitempty"`
// The CIPD version to fetch. This can be a lower-cased git ref (like
// `refs/heads/main` or `head`), or it can be a cipd tag (like
// `git_revision:dead...beef`).
//
// The default is `head`, which corresponds to the git repo's HEAD ref. This
// is typically (but not always) a symbolic ref for `refs/heads/master`.
CipdVersion string `protobuf:"bytes,5,opt,name=cipd_version,json=cipdVersion,proto3" json:"cipd_version,omitempty"`
// Colon-separated build properties to set.
// Ignored if Builder.properties is set.
//
// Use this field for string properties and use properties_j for other
// types.
Properties []string `protobuf:"bytes,3,rep,name=properties,proto3" json:"properties,omitempty"`
// Same as properties, but the value must valid JSON. For example
// properties_j: "a:1"
// means property a is a number 1, not string "1".
//
// If null, it means no property must be defined. In particular, it removes
// a default value for the property, if any.
//
// Fields properties and properties_j can be used together, but cannot both
// specify values for same property.
PropertiesJ []string `protobuf:"bytes,4,rep,name=properties_j,json=propertiesJ,proto3" json:"properties_j,omitempty"`
}
func (x *Builder_Recipe) Reset() {
*x = Builder_Recipe{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Builder_Recipe) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Builder_Recipe) ProtoMessage() {}
func (x *Builder_Recipe) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Builder_Recipe.ProtoReflect.Descriptor instead.
func (*Builder_Recipe) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{2, 1}
}
func (x *Builder_Recipe) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Builder_Recipe) GetCipdPackage() string {
if x != nil {
return x.CipdPackage
}
return ""
}
func (x *Builder_Recipe) GetCipdVersion() string {
if x != nil {
return x.CipdVersion
}
return ""
}
func (x *Builder_Recipe) GetProperties() []string {
if x != nil {
return x.Properties
}
return nil
}
func (x *Builder_Recipe) GetPropertiesJ() []string {
if x != nil {
return x.PropertiesJ
}
return nil
}
// ResultDB-specific information for a builder.
type Builder_ResultDB struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Whether to enable ResultDB:Buildbucket integration.
Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"`
// Configuration for exporting test results to BigQuery.
// This can have multiple values to export results to multiple BigQuery
// tables, or to support multiple test result predicates.
BqExports []*v1.BigQueryExport `protobuf:"bytes,2,rep,name=bq_exports,json=bqExports,proto3" json:"bq_exports,omitempty"`
// Specifies if and how to index this build's test results for historical
// queries.
HistoryOptions *v1.HistoryOptions `protobuf:"bytes,3,opt,name=history_options,json=historyOptions,proto3" json:"history_options,omitempty"`
}
func (x *Builder_ResultDB) Reset() {
*x = Builder_ResultDB{}
if protoimpl.UnsafeEnabled {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Builder_ResultDB) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Builder_ResultDB) ProtoMessage() {}
func (x *Builder_ResultDB) ProtoReflect() protoreflect.Message {
mi := &file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Builder_ResultDB.ProtoReflect.Descriptor instead.
func (*Builder_ResultDB) Descriptor() ([]byte, []int) {
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP(), []int{2, 2}
}
func (x *Builder_ResultDB) GetEnable() bool {
if x != nil {
return x.Enable
}
return false
}
func (x *Builder_ResultDB) GetBqExports() []*v1.BigQueryExport {
if x != nil {
return x.BqExports
}
return nil
}
func (x *Builder_ResultDB) GetHistoryOptions() *v1.HistoryOptions {
if x != nil {
return x.HistoryOptions
}
return nil
}
var File_go_chromium_org_luci_buildbucket_proto_project_config_proto protoreflect.FileDescriptor
var file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDesc = []byte{
0x0a, 0x3b, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b,
0x65, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x62,
0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70,
0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x67, 0x6f, 0x2e, 0x63,
0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69,
0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
0x2f, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67,
0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x1a, 0x37, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2f,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x91, 0x01, 0x0a, 0x03, 0x41, 0x63,
0x6c, 0x12, 0x29, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x15, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x41, 0x63,
0x6c, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05,
0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f,
0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x2d,
0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x41, 0x44, 0x45, 0x52,
0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10,
0x01, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x52, 0x49, 0x54, 0x45, 0x52, 0x10, 0x02, 0x22, 0x42, 0x0a,
0x06, 0x41, 0x63, 0x6c, 0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x61,
0x63, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x75, 0x69, 0x6c,
0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x41, 0x63, 0x6c, 0x52, 0x04, 0x61, 0x63, 0x6c,
0x73, 0x22, 0xf6, 0x0d, 0x0a, 0x07, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x6f,
0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69,
0x6e, 0x67, 0x48, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x78, 0x69, 0x6e, 0x73,
0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x69, 0x78, 0x69, 0x6e, 0x73, 0x12, 0x1a,
0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x77,
0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x09, 0x52, 0x0c, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x73, 0x12,
0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20,
0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12,
0x33, 0x0a, 0x06, 0x72, 0x65, 0x63, 0x69, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1b, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75,
0x69, 0x6c, 0x64, 0x65, 0x72, 0x2e, 0x52, 0x65, 0x63, 0x69, 0x70, 0x65, 0x52, 0x06, 0x72, 0x65,
0x63, 0x69, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x78, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1a, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e,
0x76, 0x32, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x03, 0x65,
0x78, 0x65, 0x12, 0x24, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xa8, 0xfe, 0x23, 0x01, 0x52, 0x0a, 0x70, 0x72,
0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f,
0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f,
0x72, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x16, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f,
0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x07,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54,
0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78,
0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x73, 0x18, 0x14, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
0x65, 0x63, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x67, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72,
0x69, 0x6f, 0x64, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f,
0x64, 0x12, 0x43, 0x0a, 0x11, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61,
0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x62,
0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72,
0x69, 0x6e, 0x61, 0x72, 0x79, 0x52, 0x0f, 0x77, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x43, 0x61,
0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73,
0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75,
0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x2e, 0x43, 0x61, 0x63,
0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x61, 0x63, 0x68, 0x65, 0x73, 0x12,
0x38, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73,
0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75,
0x63, 0x6b, 0x65, 0x74, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x52, 0x0c, 0x62, 0x75, 0x69,
0x6c, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72,
0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x12, 0x49, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64,
0x65, 0x72, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x13, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x52, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x42, 0x75, 0x69,
0x6c, 0x64, 0x65, 0x72, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a,
0x0c, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x12, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65,
0x74, 0x2e, 0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69,
0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x63, 0x0a, 0x1f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74,
0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x70,
0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1c, 0x74,
0x61, 0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6e, 0x61, 0x72,
0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x47, 0x0a, 0x0b, 0x65,
0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x25, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42,
0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e,
0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d,
0x65, 0x6e, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c,
0x18, 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75,
0x63, 0x6b, 0x65, 0x74, 0x2e, 0x76, 0x32, 0x2e, 0x54, 0x72, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x52,
0x08, 0x63, 0x72, 0x69, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x12, 0x39, 0x0a, 0x08, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x64, 0x62, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x62, 0x75,
0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65,
0x72, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x44, 0x42, 0x52, 0x08, 0x72, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x64, 0x62, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x5f, 0x68, 0x74, 0x6d, 0x6c, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f,
0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x74, 0x6d, 0x6c, 0x1a,
0x85, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12,
0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x18, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66,
0x6f, 0x72, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x65,
0x63, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x77, 0x61, 0x69, 0x74, 0x46, 0x6f,
0x72, 0x57, 0x61, 0x72, 0x6d, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x65, 0x63, 0x73, 0x12, 0x17,
0x0a, 0x07, 0x65, 0x6e, 0x76, 0x5f, 0x76, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
0x06, 0x65, 0x6e, 0x76, 0x56, 0x61, 0x72, 0x1a, 0xab, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x63, 0x69,
0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x69, 0x70, 0x64, 0x5f, 0x70,
0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x69,
0x70, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x69, 0x70,
0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x63, 0x69, 0x70, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a,
0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c,
0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x6a, 0x18, 0x04, 0x20, 0x03,
0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x4a, 0x4a,
0x04, 0x08, 0x01, 0x10, 0x02, 0x1a, 0xae, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x44, 0x42, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x62, 0x71,
0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76,
0x31, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74,
0x52, 0x09, 0x62, 0x71, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x68,
0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6c, 0x75, 0x63, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x64, 0x62, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0e, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4f,
0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69,
0x6d, 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x4a, 0x04, 0x08, 0x0b,
0x10, 0x0c, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x4a, 0x04,
0x08, 0x13, 0x10, 0x14, 0x4a, 0x04, 0x08, 0x1b, 0x10, 0x1c, 0x22, 0x9d, 0x02, 0x0a, 0x08, 0x53,
0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e,
0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x72, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61,
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x72, 0x6c, 0x46, 0x6f, 0x72, 0x6d,
0x61, 0x74, 0x12, 0x3f, 0x0a, 0x10, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x64, 0x65,
0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62,
0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64,
0x65, 0x72, 0x52, 0x0f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x44, 0x65, 0x66, 0x61, 0x75,
0x6c, 0x74, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x73, 0x18,
0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63,
0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x08, 0x62, 0x75, 0x69,
0x6c, 0x64, 0x65, 0x72, 0x73, 0x12, 0x63, 0x0a, 0x1f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x74, 0x65,
0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x65,
0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1c, 0x74, 0x61,
0x73, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x79,
0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x06, 0x42,
0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x61, 0x63, 0x6c,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62,
0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x41, 0x63, 0x6c, 0x52, 0x04, 0x61, 0x63, 0x6c, 0x73, 0x12,
0x19, 0x0a, 0x08, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
0x09, 0x52, 0x07, 0x61, 0x63, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x73, 0x77,
0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x62,
0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x53, 0x77, 0x61, 0x72, 0x6d,
0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0xac, 0x01,
0x0a, 0x0e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x66, 0x67,
0x12, 0x2d, 0x0a, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x13, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e,
0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x07, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x12,
0x2e, 0x0a, 0x08, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x13, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e,
0x41, 0x63, 0x6c, 0x53, 0x65, 0x74, 0x52, 0x07, 0x61, 0x63, 0x6c, 0x53, 0x65, 0x74, 0x73, 0x12,
0x3b, 0x0a, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x5f, 0x6d, 0x69, 0x78, 0x69, 0x6e,
0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62,
0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x52, 0x0d, 0x62,
0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x4d, 0x69, 0x78, 0x69, 0x6e, 0x73, 0x2a, 0x24, 0x0a, 0x06,
0x54, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10,
0x00, 0x12, 0x07, 0x0a, 0x03, 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x06, 0x0a, 0x02, 0x4e, 0x4f,
0x10, 0x02, 0x42, 0x7c, 0x5a, 0x34, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75,
0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64,
0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3b, 0x62, 0x75, 0x69,
0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x70, 0x62, 0xa2, 0xfe, 0x23, 0x42, 0x0a, 0x40,
0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2d, 0x63, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x2e, 0x61, 0x70, 0x70, 0x73, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
0x3a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x63, 0x66, 0x67,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescOnce sync.Once
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescData = file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDesc
)
func file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescGZIP() []byte {
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescOnce.Do(func() {
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescData)
})
return file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDescData
}
var file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
var file_go_chromium_org_luci_buildbucket_proto_project_config_proto_goTypes = []interface{}{
(Toggle)(0), // 0: buildbucket.Toggle
(Acl_Role)(0), // 1: buildbucket.Acl.Role
(*Acl)(nil), // 2: buildbucket.Acl
(*AclSet)(nil), // 3: buildbucket.AclSet
(*Builder)(nil), // 4: buildbucket.Builder
(*Swarming)(nil), // 5: buildbucket.Swarming
(*Bucket)(nil), // 6: buildbucket.Bucket
(*BuildbucketCfg)(nil), // 7: buildbucket.BuildbucketCfg
(*Builder_CacheEntry)(nil), // 8: buildbucket.Builder.CacheEntry
(*Builder_Recipe)(nil), // 9: buildbucket.Builder.Recipe
(*Builder_ResultDB)(nil), // 10: buildbucket.Builder.ResultDB
nil, // 11: buildbucket.Builder.ExperimentsEntry
(*Executable)(nil), // 12: buildbucket.v2.Executable
(*durationpb.Duration)(nil), // 13: google.protobuf.Duration
(Trinary)(0), // 14: buildbucket.v2.Trinary
(*wrapperspb.UInt32Value)(nil), // 15: google.protobuf.UInt32Value
(*v1.BigQueryExport)(nil), // 16: luci.resultdb.v1.BigQueryExport
(*v1.HistoryOptions)(nil), // 17: luci.resultdb.v1.HistoryOptions
}
var file_go_chromium_org_luci_buildbucket_proto_project_config_proto_depIdxs = []int32{
1, // 0: buildbucket.Acl.role:type_name -> buildbucket.Acl.Role
2, // 1: buildbucket.AclSet.acls:type_name -> buildbucket.Acl
9, // 2: buildbucket.Builder.recipe:type_name -> buildbucket.Builder.Recipe
12, // 3: buildbucket.Builder.exe:type_name -> buildbucket.v2.Executable
13, // 4: buildbucket.Builder.grace_period:type_name -> google.protobuf.Duration
14, // 5: buildbucket.Builder.wait_for_capacity:type_name -> buildbucket.v2.Trinary
8, // 6: buildbucket.Builder.caches:type_name -> buildbucket.Builder.CacheEntry
0, // 7: buildbucket.Builder.build_numbers:type_name -> buildbucket.Toggle
0, // 8: buildbucket.Builder.auto_builder_dimension:type_name -> buildbucket.Toggle
0, // 9: buildbucket.Builder.experimental:type_name -> buildbucket.Toggle
15, // 10: buildbucket.Builder.task_template_canary_percentage:type_name -> google.protobuf.UInt32Value
11, // 11: buildbucket.Builder.experiments:type_name -> buildbucket.Builder.ExperimentsEntry
14, // 12: buildbucket.Builder.critical:type_name -> buildbucket.v2.Trinary
10, // 13: buildbucket.Builder.resultdb:type_name -> buildbucket.Builder.ResultDB
4, // 14: buildbucket.Swarming.builder_defaults:type_name -> buildbucket.Builder
4, // 15: buildbucket.Swarming.builders:type_name -> buildbucket.Builder
15, // 16: buildbucket.Swarming.task_template_canary_percentage:type_name -> google.protobuf.UInt32Value
2, // 17: buildbucket.Bucket.acls:type_name -> buildbucket.Acl
5, // 18: buildbucket.Bucket.swarming:type_name -> buildbucket.Swarming
6, // 19: buildbucket.BuildbucketCfg.buckets:type_name -> buildbucket.Bucket
3, // 20: buildbucket.BuildbucketCfg.acl_sets:type_name -> buildbucket.AclSet
4, // 21: buildbucket.BuildbucketCfg.builder_mixins:type_name -> buildbucket.Builder
16, // 22: buildbucket.Builder.ResultDB.bq_exports:type_name -> luci.resultdb.v1.BigQueryExport
17, // 23: buildbucket.Builder.ResultDB.history_options:type_name -> luci.resultdb.v1.HistoryOptions
24, // [24:24] is the sub-list for method output_type
24, // [24:24] is the sub-list for method input_type
24, // [24:24] is the sub-list for extension type_name
24, // [24:24] is the sub-list for extension extendee
0, // [0:24] is the sub-list for field type_name
}
func init() { file_go_chromium_org_luci_buildbucket_proto_project_config_proto_init() }
func file_go_chromium_org_luci_buildbucket_proto_project_config_proto_init() {
if File_go_chromium_org_luci_buildbucket_proto_project_config_proto != nil {
return
}
file_go_chromium_org_luci_buildbucket_proto_common_proto_init()
if !protoimpl.UnsafeEnabled {
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Acl); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AclSet); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Builder); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Swarming); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Bucket); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*BuildbucketCfg); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Builder_CacheEntry); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Builder_Recipe); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Builder_ResultDB); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDesc,
NumEnums: 2,
NumMessages: 10,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_go_chromium_org_luci_buildbucket_proto_project_config_proto_goTypes,
DependencyIndexes: file_go_chromium_org_luci_buildbucket_proto_project_config_proto_depIdxs,
EnumInfos: file_go_chromium_org_luci_buildbucket_proto_project_config_proto_enumTypes,
MessageInfos: file_go_chromium_org_luci_buildbucket_proto_project_config_proto_msgTypes,
}.Build()
File_go_chromium_org_luci_buildbucket_proto_project_config_proto = out.File
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_rawDesc = nil
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_goTypes = nil
file_go_chromium_org_luci_buildbucket_proto_project_config_proto_depIdxs = nil
}