in cmd/testmatrix/main.go [108:189]
func main() {
args := e2etestrunner.Args{}
arg.MustParse(&args)
ctx := context.Background()
cloudbuildService, err := cloudbuild.NewService(ctx)
if err != nil {
panic(err)
}
storageClient, err := storage.NewClient(ctx)
if err != nil {
panic(err)
}
// Don't bother going over pages, just use a large page size and look at the
// first page
listTriggersRes, err := cloudbuildService.Projects.Triggers.List(args.ProjectID).
Context(ctx).
PageSize(128).
Do()
if err != nil {
panic(err)
}
g, egCtx := errgroup.WithContext(ctx)
results := make([]*result, len(listTriggersRes.Triggers))
for i, trigger := range listTriggersRes.Triggers {
i := i
trigger := trigger
g.Go(func() error {
res, err := handleTrigger(egCtx, args.ProjectID, trigger, cloudbuildService, storageClient)
if err != nil {
return err
}
results[i] = res
return nil
})
}
if err := g.Wait(); err != nil {
panic(err)
}
repoToPlatformToScenario := map[string]map[string]map[string]status{}
repoNameSet := map[string]struct{}{}
scenarioSet := map[string]struct{}{}
platformSet := map[string]struct{}{}
for _, result := range results {
if result == nil || result.Platform == "build" {
continue
}
repoNameSet[result.RepoName] = struct{}{}
if repoToPlatformToScenario[result.RepoName] == nil {
repoToPlatformToScenario[result.RepoName] = map[string]map[string]status{}
}
platformToScenario := repoToPlatformToScenario[result.RepoName]
platformToScenario[result.Platform] = result.Statuses
platformSet[result.Platform] = struct{}{}
for scenario := range result.Statuses {
scenarioSet[scenario] = struct{}{}
}
}
repoNames := sortStringSet(repoNameSet)
scenarios := sortStringSet(scenarioSet)
platforms := sortStringSet(platformSet)
template := template.Must(template.New("table").Parse(templateTxt))
err = template.Execute(os.Stdout, struct {
RepoNames []string
Scenarios []string
Platforms []string
RepoToPlatformToScenario map[string]map[string]map[string]status
Pass status
Skip status
}{repoNames, scenarios, platforms, repoToPlatformToScenario, pass, skip})
if err != nil {
panic(err)
}
}