dev/testsreporter/builderror.go (75 lines of code) (raw):

// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one // or more contributor license agreements. Licensed under the Elastic License; // you may not use this file except in compliance with the Elastic License. package testsreporter import ( "strings" ) const ( buildReportingTeam = "@elastic/ecosystem" buildReportingTeamLabel = "Team:Ecosystem" ) type buildError struct { dataError teams []string packages []string } type buildErrorOptions struct { Serverless bool ServerlessProject string LogsDB bool StackVersion string Subscription string Packages []string BuildURL string PreviousBuilds []string ClosedIssueURL string } // Ensures that buildError implements failureObserver interface var _ failureObserver = new(buildError) func newBuildError(options buildErrorOptions) (*buildError, error) { b := buildError{ dataError: dataError{ serverless: options.Serverless, serverlessProject: options.ServerlessProject, logsDB: options.LogsDB, stackVersion: options.StackVersion, subscription: options.Subscription, errorLinks: errorLinks{ firstBuild: options.BuildURL, closedIssueURL: options.ClosedIssueURL, previousBuilds: options.PreviousBuilds, }, }, packages: options.Packages, teams: []string{buildReportingTeam}, } return &b, nil } func (b *buildError) String() string { var sb strings.Builder sb.WriteString(b.dataError.String()) sb.WriteString("Too many packages failing in daily job") return sb.String() } func (b *buildError) FirstBuild() string { return b.errorLinks.firstBuild } func (b *buildError) UpdateLinks(links errorLinks) { b.errorLinks = links } func (b *buildError) Teams() []string { return b.teams } func (b *buildError) SummaryData() map[string]any { data := b.dataError.Data() data["packages"] = b.packages data["owners"] = b.teams return data } func (b *buildError) DescriptionData() map[string]any { data := b.SummaryData() for key, value := range b.errorLinks.Data() { data[key] = value } return data } func (b *buildError) Labels() []string { return []string{buildReportingTeamLabel} }