From f55fe989a47d492cfe5631a4eb1e7b362821f5e8 Mon Sep 17 00:00:00 2001 From: Jason Song Date: Mon, 10 Apr 2023 21:46:36 +0800 Subject: [PATCH] Use actions job link as commit status URL instead of run link (#24023) (#24032) Backport #24023. A commit status is bound to a job, not a run. --- services/actions/commit_status.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/services/actions/commit_status.go b/services/actions/commit_status.go index 6604a149a..7d674f790 100644 --- a/services/actions/commit_status.go +++ b/services/actions/commit_status.go @@ -88,13 +88,18 @@ func CreateCommitStatus(ctx context.Context, job *actions_model.ActionRunJob) er return fmt.Errorf("GetLatestCommitStatus: %w", err) } + index, err := getIndexOfJob(ctx, job) + if err != nil { + return fmt.Errorf("getIndexOfJob: %w", err) + } + if err := git_model.NewCommitStatus(ctx, git_model.NewCommitStatusOptions{ Repo: repo, SHA: sha, Creator: creator, CommitStatus: &git_model.CommitStatus{ SHA: sha, - TargetURL: run.Link(), + TargetURL: fmt.Sprintf("%s/jobs/%d", run.Link(), index), Description: "", Context: ctxname, CreatorID: creatorID, @@ -121,3 +126,17 @@ func toCommitStatus(status actions_model.Status) api.CommitStatusState { return api.CommitStatusError } } + +func getIndexOfJob(ctx context.Context, job *actions_model.ActionRunJob) (int, error) { + // TODO: store job index as a field in ActionRunJob to avoid this + jobs, err := actions_model.GetRunJobsByRunID(ctx, job.RunID) + if err != nil { + return 0, err + } + for i, v := range jobs { + if v.ID == job.ID { + return i, nil + } + } + return 0, nil +}