diff --git a/services/actions/commit_status.go b/services/actions/commit_status.go index 984c41295677..97643e5f3566 100644 --- a/services/actions/commit_status.go +++ b/services/actions/commit_status.go @@ -108,6 +108,11 @@ func createCommitStatus(ctx context.Context, job *actions_model.ActionRunJob) er description = "Blocked by required conditions" } + index, err := getIndexOfJob(ctx, job) + if err != nil { + return fmt.Errorf("getIndexOfJob: %w", err) + } + creator := user_model.NewActionsUser() if err := git_model.NewCommitStatus(ctx, git_model.NewCommitStatusOptions{ Repo: repo, @@ -115,7 +120,7 @@ func createCommitStatus(ctx context.Context, job *actions_model.ActionRunJob) er Creator: creator, CommitStatus: &git_model.CommitStatus{ SHA: sha, - TargetURL: run.Link(), + TargetURL: fmt.Sprintf("%s/jobs/%d", run.Link(), index), Description: description, Context: ctxname, CreatorID: creator.ID, @@ -142,3 +147,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 +}