From 69e39231ff95c1003de82a9732adc0854d705e71 Mon Sep 17 00:00:00 2001 From: Sean Chase Date: Wed, 21 Aug 2019 17:17:49 -0700 Subject: [PATCH] Add 17: open_bug_template to config.proto Used to identify the source repository when linking bugs to issues --- config/testgrids/default.yaml | 4 +- testgrid/cmd/configurator/prow.go | 10 +++-- testgrid/cmd/configurator/prow_test.go | 39 ++++++++++++++-- testgrid/cmd/configurator/yaml2proto.go | 4 ++ testgrid/config/config.pb.go | 60 ++++++++++++++----------- testgrid/config/config.proto | 5 ++- 6 files changed, 88 insertions(+), 34 deletions(-) diff --git a/config/testgrids/default.yaml b/config/testgrids/default.yaml index a7f8af4b16cf..204e8563487a 100644 --- a/config/testgrids/default.yaml +++ b/config/testgrids/default.yaml @@ -26,9 +26,11 @@ default_dashboard_tab: value: 'E2E: ' - key: body value: - attach_bug_template: # The URL template to visit when attaching a bug + attach_bug_template: # The URL template to visit when attaching to an existing bug url: # empty options: #empty + open_bug_template: # The URL template to visit when visiting an associated bug + url: https://github.com/kubernetes/kubernetes/issues/ results_text: See these results on Prow # Text to show in the about menu as a link to another view of the results results_url_template: # The URL template to visit after clicking url: https://prow.k8s.io/job-history/ diff --git a/testgrid/cmd/configurator/prow.go b/testgrid/cmd/configurator/prow.go index 9b561224d395..6d3dac9c25ae 100644 --- a/testgrid/cmd/configurator/prow.go +++ b/testgrid/cmd/configurator/prow.go @@ -138,17 +138,21 @@ func applySingleProwjobAnnotations(c *Config, pc *prowConfig.Config, j prowConfi repo = fmt.Sprintf("%s/%s", j.ExtraRefs[0].Org, j.ExtraRefs[0].Repo) } } - var linkTemplate *config.LinkTemplate + var codeSearchLinkTemplate, openBugLinkTemplate *config.LinkTemplate if repo != "" { - linkTemplate = &config.LinkTemplate{ + codeSearchLinkTemplate = &config.LinkTemplate{ Url: fmt.Sprintf("https://github.com/%s/compare/...", repo), } + openBugLinkTemplate = &config.LinkTemplate{ + Url: fmt.Sprintf("https://github.com/%s/issues/", repo), + } } dt := &config.DashboardTab{ Name: tabName, TestGroupName: testGroupName, Description: description, - CodeSearchUrlTemplate: linkTemplate, + CodeSearchUrlTemplate: codeSearchLinkTemplate, + OpenBugTemplate: openBugLinkTemplate, } if firstDashboard { firstDashboard = false diff --git a/testgrid/cmd/configurator/prow_test.go b/testgrid/cmd/configurator/prow_test.go index c67892fe6605..c09e11a91d28 100644 --- a/testgrid/cmd/configurator/prow_test.go +++ b/testgrid/cmd/configurator/prow_test.go @@ -26,6 +26,7 @@ import ( const ProwDefaultGCSPath = "pathPrefix/" const ProwJobName = "TestJob" +const ExampleRepository = "test/repo" func Test_applySingleProwjobAnnotations(t *testing.T) { tests := []struct { @@ -134,6 +135,9 @@ func Test_applySingleProwjobAnnotations(t *testing.T) { CodeSearchUrlTemplate: &config.LinkTemplate{ Url: "https://github.com/test/repo/compare/...", }, + OpenBugTemplate: &config.LinkTemplate{ + Url: "https://github.com/test/repo/issues/", + }, }, }, }, @@ -178,6 +182,9 @@ func Test_applySingleProwjobAnnotations(t *testing.T) { CodeSearchUrlTemplate: &config.LinkTemplate{ Url: "https://github.com/test/repo/compare/...", }, + OpenBugTemplate: &config.LinkTemplate{ + Url: "https://github.com/test/repo/issues/", + }, AlertOptions: &config.DashboardTabAlertOptions{ AlertMailToAddresses: "test@example.com", }, @@ -194,6 +201,9 @@ func Test_applySingleProwjobAnnotations(t *testing.T) { CodeSearchUrlTemplate: &config.LinkTemplate{ Url: "https://github.com/test/repo/compare/...", }, + OpenBugTemplate: &config.LinkTemplate{ + Url: "https://github.com/test/repo/issues/", + }, }, }, }, @@ -249,6 +259,9 @@ func Test_applySingleProwjobAnnotations(t *testing.T) { CodeSearchUrlTemplate: &config.LinkTemplate{ Url: "https://github.com/test/repo/compare/...", }, + OpenBugTemplate: &config.LinkTemplate{ + Url: "https://github.com/test/repo/issues/", + }, }, }, }, @@ -296,6 +309,9 @@ func Test_applySingleProwjobAnnotations(t *testing.T) { CodeSearchUrlTemplate: &config.LinkTemplate{ Url: "https://github.com/test/repo/compare/...", }, + OpenBugTemplate: &config.LinkTemplate{ + Url: "https://github.com/test/repo/issues/", + }, }, }, }, @@ -320,7 +336,7 @@ func Test_applySingleProwjobAnnotations(t *testing.T) { Annotations: test.annotations, } - err := applySingleProwjobAnnotations(result, fakeProwConfig(), job, test.prowJobType, "test/repo") + err := applySingleProwjobAnnotations(result, fakeProwConfig(), job, test.prowJobType, ExampleRepository) if test.expectedConfig == nil { if err == nil { @@ -343,8 +359,8 @@ func Test_applySingleProwjobAnnotation_WithDefaults(t *testing.T) { defaultConfig := &config.DefaultConfiguration{ DefaultTestGroup: &config.TestGroup{ - GcsPrefix: "originalConfigPrefix", //Overwritten - DaysOfResults: 5, //Kept + GcsPrefix: "originalConfigPrefix", //Default is Overwritten + DaysOfResults: 5, //Default is Kept NumColumnsRecent: 10, //Sometimes Overwritten; see test }, DefaultDashboardTab: &config.DashboardTab{ @@ -354,6 +370,12 @@ func Test_applySingleProwjobAnnotation_WithDefaults(t *testing.T) { AlertOptions: &config.DashboardTabAlertOptions{ AlertMailToAddresses: "default_admin@example.com", //Kept; see test }, + CodeSearchUrlTemplate: &config.LinkTemplate{ //Overwritten + Url: "https://example.com/code_search", + }, + OpenBugTemplate: &config.LinkTemplate{ //Overwritten + Url: "https://example.com/open_bug", + }, }, } @@ -438,6 +460,9 @@ func Test_applySingleProwjobAnnotation_WithDefaults(t *testing.T) { CodeSearchUrlTemplate: &config.LinkTemplate{ Url: "https://github.com/test/repo/compare/...", }, + OpenBugTemplate: &config.LinkTemplate{ + Url: "https://github.com/test/repo/issues/", + }, AlertOptions: &config.DashboardTabAlertOptions{ AlertMailToAddresses: "default_admin@example.com", }, @@ -483,6 +508,9 @@ func Test_applySingleProwjobAnnotation_WithDefaults(t *testing.T) { CodeSearchUrlTemplate: &config.LinkTemplate{ Url: "https://github.com/test/repo/compare/...", }, + OpenBugTemplate: &config.LinkTemplate{ + Url: "https://github.com/test/repo/issues/", + }, AlertOptions: &config.DashboardTabAlertOptions{ AlertMailToAddresses: "test@example.com", }, @@ -500,6 +528,9 @@ func Test_applySingleProwjobAnnotation_WithDefaults(t *testing.T) { CodeSearchUrlTemplate: &config.LinkTemplate{ Url: "https://github.com/test/repo/compare/...", }, + OpenBugTemplate: &config.LinkTemplate{ + Url: "https://github.com/test/repo/issues/", + }, AlertOptions: &config.DashboardTabAlertOptions{ AlertMailToAddresses: "default_admin@example.com", }, @@ -528,7 +559,7 @@ func Test_applySingleProwjobAnnotation_WithDefaults(t *testing.T) { Annotations: test.annotations, } - err := applySingleProwjobAnnotations(result, fakeProwConfig(), job, test.prowJobType, "test/repo") + err := applySingleProwjobAnnotations(result, fakeProwConfig(), job, test.prowJobType, ExampleRepository) if test.expectedConfig == nil { if err == nil { diff --git a/testgrid/cmd/configurator/yaml2proto.go b/testgrid/cmd/configurator/yaml2proto.go index 25e636b1e9e5..36d4cd37722c 100644 --- a/testgrid/cmd/configurator/yaml2proto.go +++ b/testgrid/cmd/configurator/yaml2proto.go @@ -122,6 +122,10 @@ func ReconcileDashboardTab(currentTab *config.DashboardTab, defaultTab *config.D if currentTab.AlertOptions == nil { currentTab.AlertOptions = defaultTab.AlertOptions } + + if currentTab.OpenBugTemplate == nil { + currentTab.OpenBugTemplate = defaultTab.OpenBugTemplate + } } // UpdateDefaults reads any default configuration from yamlData and updates the diff --git a/testgrid/config/config.pb.go b/testgrid/config/config.pb.go index a357a6cd0ece..bb2aa47db2fd 100644 --- a/testgrid/config/config.pb.go +++ b/testgrid/config/config.pb.go @@ -676,10 +676,12 @@ type DashboardTab struct { // A description paragraph to be displayed. Description string `protobuf:"bytes,13,opt,name=description,proto3" json:"description,omitempty"` // Configuration options for dashboard tab alerts. - AlertOptions *DashboardTabAlertOptions `protobuf:"bytes,15,opt,name=alert_options,json=alertOptions,proto3" json:"alert_options,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AlertOptions *DashboardTabAlertOptions `protobuf:"bytes,15,opt,name=alert_options,json=alertOptions,proto3" json:"alert_options,omitempty"` + // The URL template to visit when viewing an associated bug. + OpenBugTemplate *LinkTemplate `protobuf:"bytes,17,opt,name=open_bug_template,json=openBugTemplate,proto3" json:"open_bug_template,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *DashboardTab) Reset() { *m = DashboardTab{} } @@ -805,6 +807,13 @@ func (m *DashboardTab) GetAlertOptions() *DashboardTabAlertOptions { return nil } +func (m *DashboardTab) GetOpenBugTemplate() *LinkTemplate { + if m != nil { + return m.OpenBugTemplate + } + return nil +} + // Configuration options for dashboard tab alerts. type DashboardTabAlertOptions struct { // Time in hours before an alert will be added to a test results table if the @@ -1082,14 +1091,14 @@ func init() { func init() { proto.RegisterFile("config.proto", fileDescriptor_3eaf2c85e69e9ea4) } var fileDescriptor_3eaf2c85e69e9ea4 = []byte{ - // 1416 bytes of a gzipped FileDescriptorProto + // 1434 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xdb, 0x72, 0xd3, 0xc6, 0x1b, 0xff, 0xcb, 0x51, 0x12, 0xf9, 0xb3, 0x64, 0x2b, 0x9b, 0x84, 0x08, 0xf2, 0xef, 0x10, 0xcc, 0x00, 0x19, 0x60, 0xdc, 0x69, 0x80, 0x99, 0xd2, 0x42, 0x4b, 0x9a, 0x38, 0x80, 0x21, 0xc1, 0xa3, 0x98, 0xde, 0xee, 0xac, 0xe5, 0xb5, 0xad, 0x46, 0x07, 0xcf, 0xee, 0xaa, 0x13, 0x9e, 0xa3, 0xaf, - 0xd0, 0xfb, 0x5e, 0xf5, 0xa2, 0x6f, 0xd2, 0xbe, 0x4d, 0x67, 0x77, 0x25, 0x59, 0xa6, 0x0e, 0x3d, + 0xd0, 0xfb, 0x5e, 0xf7, 0x4d, 0xda, 0x17, 0xe9, 0x75, 0x67, 0x77, 0x25, 0x59, 0xa6, 0x0e, 0x3d, 0xdc, 0x69, 0x7f, 0xdf, 0x61, 0xf7, 0x3b, 0xec, 0xef, 0x5b, 0x81, 0x1d, 0xa4, 0xc9, 0x38, 0x9c, - 0x74, 0x66, 0x2c, 0x15, 0x69, 0xfb, 0x37, 0x03, 0x9a, 0x03, 0xca, 0xc5, 0x19, 0x89, 0xe9, 0x91, + 0x74, 0x66, 0x2c, 0x15, 0x69, 0xfb, 0x57, 0x03, 0x9a, 0x03, 0xca, 0xc5, 0x19, 0x89, 0xe9, 0x91, 0x12, 0xa0, 0x17, 0xe0, 0x24, 0x24, 0xa6, 0x98, 0x46, 0x34, 0xa6, 0x89, 0xe0, 0x9e, 0xb1, 0xb7, 0xb2, 0xdf, 0x38, 0xd8, 0xed, 0x2c, 0xea, 0x75, 0xe4, 0x67, 0x57, 0xeb, 0xf8, 0x76, 0x32, 0x5f, 0x70, 0x74, 0x13, 0x1a, 0xca, 0xc3, 0x38, 0x65, 0x31, 0x11, 0x5e, 0x6d, 0xcf, 0xd8, 0xaf, 0xfb, @@ -1098,7 +1107,7 @@ var fileDescriptor_3eaf2c85e69e9ea4 = []byte{ 0x56, 0x5c, 0xb3, 0x67, 0x5a, 0xa6, 0xbb, 0xda, 0x7e, 0x03, 0xf6, 0x59, 0x2a, 0xc2, 0x71, 0x18, 0x10, 0x11, 0xa6, 0x09, 0xf2, 0x60, 0x9d, 0x67, 0x71, 0x4c, 0xd8, 0x07, 0xcf, 0x50, 0x0e, 0x8a, 0x25, 0xba, 0xa5, 0xa2, 0x16, 0xf4, 0x52, 0xe0, 0x28, 0x4c, 0x2e, 0x72, 0xff, 0x8d, 0x1c, 0x7b, - 0x1b, 0x26, 0x17, 0xed, 0xdf, 0x2d, 0xa8, 0xcb, 0x00, 0x5f, 0xb2, 0x34, 0x9b, 0x21, 0x04, 0xa6, + 0x1b, 0x26, 0x17, 0xed, 0xdf, 0x2c, 0xa8, 0xcb, 0x00, 0x5f, 0xb2, 0x34, 0x9b, 0x21, 0x04, 0xa6, 0x3c, 0x6e, 0xee, 0x47, 0x7d, 0xa3, 0xcf, 0x00, 0x26, 0x01, 0xc7, 0x33, 0x46, 0xc7, 0xe1, 0x65, 0xee, 0xa2, 0x3e, 0x09, 0x78, 0x5f, 0x01, 0xe8, 0x2e, 0xb4, 0x46, 0xe4, 0x03, 0xc7, 0xe9, 0x18, 0x33, 0xca, 0xb3, 0x48, 0x70, 0x6f, 0x65, 0xcf, 0xd8, 0x5f, 0xf5, 0x1d, 0x09, 0xbf, 0x1b, 0xfb, @@ -1143,7 +1152,7 @@ var fileDescriptor_3eaf2c85e69e9ea4 = []byte{ 0x0b, 0x2b, 0x19, 0x8b, 0x72, 0x36, 0x94, 0x9f, 0xa8, 0x03, 0xeb, 0xe9, 0x4c, 0xef, 0x5b, 0x53, 0xfb, 0x6e, 0x75, 0xa4, 0xc5, 0x3b, 0x8d, 0x15, 0x86, 0x7e, 0xa1, 0xd4, 0x7e, 0x0e, 0x9b, 0x4b, 0xe4, 0xd2, 0xf1, 0x05, 0x2d, 0xe8, 0x5a, 0x7e, 0xa2, 0x2d, 0x58, 0xd5, 0x85, 0xd7, 0xb1, 0xea, - 0x45, 0xfb, 0xd7, 0x55, 0xb0, 0x8f, 0x97, 0x65, 0xa4, 0x4a, 0xd0, 0x77, 0x41, 0x71, 0x20, 0x9e, + 0x45, 0xfb, 0x8f, 0x55, 0xb0, 0x8f, 0x97, 0x65, 0xa4, 0x4a, 0xd0, 0x77, 0x41, 0x71, 0x20, 0x9e, 0x48, 0x6e, 0xc3, 0x95, 0x84, 0x39, 0xa2, 0x60, 0x3c, 0xd5, 0x1f, 0xb7, 0xc1, 0x19, 0x66, 0x13, 0x1c, 0xa4, 0xf1, 0x2c, 0x4d, 0x24, 0x19, 0x68, 0x9e, 0xb6, 0x87, 0xd9, 0xe4, 0xa8, 0xc0, 0x96, 0x32, 0x92, 0xf9, 0x2f, 0x18, 0x69, 0xf5, 0x0a, 0x46, 0xba, 0x05, 0xf6, 0x90, 0x70, 0x8a, 0x8b, @@ -1156,20 +1165,21 @@ var fileDescriptor_3eaf2c85e69e9ea4 = []byte{ 0x81, 0x72, 0xd5, 0xf7, 0x2c, 0x2a, 0xf7, 0x38, 0x01, 0xaf, 0x5a, 0x95, 0x05, 0x27, 0xf6, 0x32, 0x27, 0xdb, 0xf3, 0x62, 0x55, 0xfd, 0xec, 0xc9, 0x7b, 0xc0, 0x03, 0x16, 0xaa, 0x94, 0x7b, 0x8e, 0x3e, 0x6a, 0x05, 0x42, 0xdf, 0x80, 0xa3, 0xe7, 0x5f, 0x51, 0xa8, 0x96, 0x72, 0x7f, 0x7d, 0xe1, - 0x9a, 0x2a, 0xb2, 0xcc, 0xcb, 0xe6, 0xdb, 0xa4, 0xb2, 0xea, 0x99, 0x56, 0xd3, 0x6d, 0xb5, 0xff, - 0xa8, 0x81, 0x77, 0x95, 0xc1, 0xa7, 0x47, 0xac, 0xf1, 0xdf, 0x46, 0x6c, 0xed, 0xca, 0x11, 0xfb, - 0x04, 0x76, 0xf4, 0x6e, 0x31, 0x09, 0x23, 0x65, 0x30, 0x1a, 0x31, 0x2a, 0xb9, 0x3f, 0xe7, 0xd8, - 0x2d, 0x25, 0x3e, 0x25, 0x61, 0x34, 0x48, 0x0f, 0x0b, 0xd9, 0xdf, 0xcd, 0x11, 0xf3, 0xd3, 0x73, - 0x44, 0x3d, 0xc9, 0x86, 0x3f, 0xd0, 0x40, 0xe4, 0x5c, 0x53, 0x2c, 0xd1, 0x2e, 0xd4, 0x47, 0x54, - 0xf6, 0x99, 0x24, 0x16, 0x7d, 0x09, 0x2c, 0x05, 0xbc, 0x67, 0x91, 0xbc, 0xa1, 0x5a, 0x18, 0x53, - 0xce, 0xe5, 0x20, 0x59, 0xd7, 0x0f, 0x42, 0x05, 0x9e, 0x6a, 0xac, 0x7d, 0x0a, 0xcd, 0x32, 0xb5, - 0x57, 0xbf, 0xda, 0xee, 0xc9, 0x67, 0x59, 0x41, 0xb7, 0x12, 0xd1, 0x84, 0x55, 0xf7, 0x9b, 0x25, - 0x2c, 0x49, 0x81, 0xb7, 0x7f, 0x36, 0xc0, 0x39, 0xaa, 0x4e, 0x19, 0xf4, 0x00, 0x1a, 0x73, 0x3e, - 0x29, 0x9e, 0xc1, 0x30, 0x7f, 0x3e, 0xf9, 0x50, 0xf2, 0x0a, 0x47, 0xf7, 0x01, 0x4a, 0x87, 0x05, - 0x27, 0xc2, 0xbc, 0x59, 0xfc, 0x8a, 0x14, 0x7d, 0x05, 0xee, 0xfc, 0x4c, 0xb9, 0x77, 0xcd, 0xde, - 0xad, 0xce, 0x62, 0x48, 0xfe, 0xfc, 0xf0, 0x7a, 0x9f, 0xf6, 0x4f, 0x06, 0x6c, 0x1d, 0x6b, 0xbe, - 0x5e, 0x3c, 0xed, 0x97, 0x80, 0x4a, 0x6a, 0x2f, 0x4f, 0xad, 0x52, 0xb1, 0x78, 0x68, 0xb7, 0x60, - 0xfb, 0xf2, 0xb1, 0x7b, 0x08, 0xdb, 0x85, 0xe5, 0xe2, 0x64, 0xaa, 0xe5, 0x37, 0x6a, 0x61, 0x32, - 0x6d, 0xe6, 0xba, 0x55, 0x70, 0xb8, 0xa6, 0xfe, 0x26, 0x1e, 0xfd, 0x19, 0x00, 0x00, 0xff, 0xff, - 0x72, 0x8a, 0x64, 0x1c, 0x5d, 0x0c, 0x00, 0x00, + 0x9a, 0x2a, 0xb2, 0xcc, 0xcb, 0xe6, 0xdb, 0xa4, 0xb2, 0x92, 0x75, 0x50, 0x45, 0x5c, 0x48, 0xe5, + 0xc6, 0xd2, 0x3a, 0x48, 0xbd, 0x4a, 0x22, 0x7b, 0xa6, 0xd5, 0x74, 0x5b, 0x8a, 0x4d, 0x36, 0xda, + 0xbf, 0xd7, 0xc0, 0xbb, 0x6a, 0xc7, 0x4f, 0xcf, 0x68, 0xe3, 0xbf, 0xcd, 0xe8, 0xda, 0x95, 0x33, + 0xfa, 0x09, 0xec, 0xe8, 0xdd, 0x62, 0x12, 0x46, 0xca, 0x60, 0x34, 0x62, 0x54, 0x0e, 0x8f, 0x9c, + 0xa4, 0xb7, 0x94, 0xf8, 0x94, 0x84, 0xd1, 0x20, 0x3d, 0x2c, 0x64, 0x7f, 0x37, 0x88, 0xcc, 0x4f, + 0x0f, 0x22, 0xf5, 0xa6, 0x1b, 0xfe, 0x40, 0x03, 0x91, 0x93, 0x55, 0xb1, 0x44, 0xbb, 0x50, 0x1f, + 0x51, 0x99, 0x5d, 0xc9, 0x4c, 0xfa, 0x16, 0x59, 0x0a, 0x78, 0xcf, 0x22, 0x79, 0xc5, 0xb5, 0x30, + 0xa6, 0x9c, 0xcb, 0x49, 0xb4, 0xae, 0x5f, 0x94, 0x0a, 0x3c, 0xd5, 0x58, 0xfb, 0x14, 0x9a, 0x65, + 0x6a, 0xaf, 0x7e, 0xf6, 0xdd, 0x93, 0xef, 0xba, 0x82, 0xaf, 0x25, 0xa2, 0x19, 0xaf, 0xee, 0x37, + 0x4b, 0x58, 0xb2, 0x0a, 0x6f, 0xff, 0x6c, 0x80, 0x73, 0x54, 0x1d, 0x53, 0xe8, 0x01, 0x34, 0xe6, + 0x84, 0x54, 0xbc, 0xa3, 0x61, 0xfe, 0xfe, 0xf2, 0xa1, 0x24, 0x26, 0x8e, 0xee, 0x03, 0x94, 0x0e, + 0x0b, 0x52, 0x85, 0x79, 0xb7, 0xf9, 0x15, 0x29, 0xfa, 0x0a, 0xdc, 0xf9, 0x99, 0x72, 0xef, 0x9a, + 0xfe, 0x5b, 0x9d, 0xc5, 0x90, 0xfc, 0xf9, 0xe1, 0xf5, 0x3e, 0xed, 0x9f, 0x0c, 0xd8, 0x3a, 0xd6, + 0x84, 0xbf, 0x78, 0xda, 0x2f, 0x01, 0x95, 0xb3, 0xa1, 0x3c, 0xb5, 0x4a, 0xc5, 0xe2, 0xa1, 0xdd, + 0x62, 0x5c, 0x94, 0xaf, 0xe5, 0x43, 0xd8, 0x2e, 0x2c, 0x17, 0x47, 0x5b, 0x2d, 0xef, 0xf7, 0x85, + 0xd1, 0xb6, 0x99, 0xeb, 0x56, 0xc1, 0xe1, 0x9a, 0xfa, 0x1d, 0x79, 0xf4, 0x67, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xb7, 0x55, 0x75, 0x58, 0x9e, 0x0c, 0x00, 0x00, } diff --git a/testgrid/config/config.proto b/testgrid/config/config.proto index 3a93f1089df0..0939ee900dcd 100644 --- a/testgrid/config/config.proto +++ b/testgrid/config/config.proto @@ -165,7 +165,7 @@ message LinkOptionsTemplate { // A single tab on a dashboard. message DashboardTab { - reserved 14; + reserved 14, 16; // The name of the dashboard tab to display in the client. string name = 1; @@ -215,6 +215,9 @@ message DashboardTab { // Configuration options for dashboard tab alerts. DashboardTabAlertOptions alert_options = 15; + + // The URL template to visit when viewing an associated bug. + LinkTemplate open_bug_template = 17; } // Configuration options for dashboard tab alerts.