diff --git a/appview/pages/pages.go b/appview/pages/pages.go --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -813,6 +813,7 @@ DidHandleMap map[string]string FilteringBy db.PullState Stacks map[string]db.Stack + Pipelines map[string]db.Pipeline } func (p *Pages) RepoPulls(w io.Writer, params RepoPullsParams) error { diff --git a/appview/pulls/pulls.go b/appview/pulls/pulls.go --- a/appview/pulls/pulls.go +++ b/appview/pulls/pulls.go @@ -555,8 +555,11 @@ // we want to group all stacked PRs into just one list stacks := make(map[string]db.Stack) + var shas []string n := 0 for _, p := range pulls { + // store the sha for later + shas = append(shas, p.LatestSha()) // this PR is stacked if p.StackId != "" { // we have already seen this PR stack @@ -574,6 +577,23 @@ } } pulls = pulls[:n] + + repoInfo := f.RepoInfo(user) + ps, err := db.GetPipelineStatuses( + s.db, + db.FilterEq("repo_owner", repoInfo.OwnerDid), + db.FilterEq("repo_name", repoInfo.Name), + db.FilterEq("knot", repoInfo.Knot), + db.FilterIn("sha", shas), + ) + if err != nil { + log.Printf("failed to fetch pipeline statuses: %s", err) + // non-fatal + } + m := make(map[string]db.Pipeline) + for _, p := range ps { + m[p.Sha] = p + } identsToResolve := make([]string, len(pulls)) for i, pull := range pulls { @@ -596,6 +616,7 @@ DidHandleMap: didHandleMap, FilteringBy: state, Stacks: stacks, + Pipelines: m, }) } diff --git a/appview/pages/templates/repo/pulls/pulls.html b/appview/pages/templates/repo/pulls/pulls.html --- a/appview/pages/templates/repo/pulls/pulls.html +++ b/appview/pages/templates/repo/pulls/pulls.html @@ -54,7 +54,7 @@ #{{ .PullId }} -
+