Use actions job link as commit status URL instead of run link (#24023)
A commit status is bound to a job, not a run. --------- Co-authored-by: silverwind <me@silverwind.io>
This commit is contained in:
parent
4e33481357
commit
8cbc4a367d
1 changed files with 20 additions and 1 deletions
|
@ -108,6 +108,11 @@ func createCommitStatus(ctx context.Context, job *actions_model.ActionRunJob) er
|
||||||
description = "Blocked by required conditions"
|
description = "Blocked by required conditions"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
index, err := getIndexOfJob(ctx, job)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("getIndexOfJob: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
creator := user_model.NewActionsUser()
|
creator := user_model.NewActionsUser()
|
||||||
if err := git_model.NewCommitStatus(ctx, git_model.NewCommitStatusOptions{
|
if err := git_model.NewCommitStatus(ctx, git_model.NewCommitStatusOptions{
|
||||||
Repo: repo,
|
Repo: repo,
|
||||||
|
@ -115,7 +120,7 @@ func createCommitStatus(ctx context.Context, job *actions_model.ActionRunJob) er
|
||||||
Creator: creator,
|
Creator: creator,
|
||||||
CommitStatus: &git_model.CommitStatus{
|
CommitStatus: &git_model.CommitStatus{
|
||||||
SHA: sha,
|
SHA: sha,
|
||||||
TargetURL: run.Link(),
|
TargetURL: fmt.Sprintf("%s/jobs/%d", run.Link(), index),
|
||||||
Description: description,
|
Description: description,
|
||||||
Context: ctxname,
|
Context: ctxname,
|
||||||
CreatorID: creator.ID,
|
CreatorID: creator.ID,
|
||||||
|
@ -142,3 +147,17 @@ func toCommitStatus(status actions_model.Status) api.CommitStatusState {
|
||||||
return api.CommitStatusError
|
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
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue