0
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-10-31 20:21:47 +01:00

Sync run status with db prior webhook delivery

* fixes status glitch of webhook
* e.g. queued for cancel
* e.g. completed for rerun
This commit is contained in:
Christopher Homberger 2025-03-21 19:33:17 +01:00
parent cdefda13a3
commit d404c60b73
3 changed files with 20 additions and 8 deletions

View File

@ -459,6 +459,8 @@ func rerunJob(ctx *context_module.Context, job *actions_model.ActionRunJob, shou
} }
actions_service.CreateCommitStatus(ctx, job) actions_service.CreateCommitStatus(ctx, job)
// Sync run status with db
job.Run = nil
_ = job.LoadAttributes(ctx) _ = job.LoadAttributes(ctx)
notify_service.WorkflowRunStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job.Run) notify_service.WorkflowRunStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job.Run)
notify_service.WorkflowJobStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job, nil) notify_service.WorkflowJobStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job, nil)
@ -564,6 +566,9 @@ func Cancel(ctx *context_module.Context) {
} }
if len(updatedjobs) > 0 { if len(updatedjobs) > 0 {
job := updatedjobs[0] job := updatedjobs[0]
// Sync run status with db
job.Run = nil
job.LoadAttributes(ctx)
notify_service.WorkflowRunStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job.Run) notify_service.WorkflowRunStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job.Run)
} }
ctx.JSON(http.StatusOK, struct{}{}) ctx.JSON(http.StatusOK, struct{}{})
@ -607,14 +612,18 @@ func Approve(ctx *context_module.Context) {
actions_service.CreateCommitStatus(ctx, jobs...) actions_service.CreateCommitStatus(ctx, jobs...)
if len(updatedjobs) > 0 {
job := updatedjobs[0]
// Sync run status with db
job.Run = nil
job.LoadAttributes(ctx)
notify_service.WorkflowRunStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job.Run)
}
for _, job := range updatedjobs { for _, job := range updatedjobs {
_ = job.LoadAttributes(ctx) _ = job.LoadAttributes(ctx)
notify_service.WorkflowJobStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job, nil) notify_service.WorkflowJobStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job, nil)
} }
if len(updatedjobs) > 0 {
job := updatedjobs[0]
notify_service.WorkflowRunStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job.Run)
}
ctx.JSON(http.StatusOK, struct{}{}) ctx.JSON(http.StatusOK, struct{}{})
} }

View File

@ -127,11 +127,11 @@ func CancelAbandonedJobs(ctx context.Context) error {
} }
CreateCommitStatus(ctx, job) CreateCommitStatus(ctx, job)
if updated { if updated {
// Sync run status with db
job.Run = nil
_ = job.LoadAttributes(ctx) _ = job.LoadAttributes(ctx)
notify_service.WorkflowJobStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job, nil) notify_service.WorkflowJobStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job, nil)
if job.Run != nil { notify_service.WorkflowRunStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job.Run)
notify_service.WorkflowRunStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job.Run)
}
} }
} }

View File

@ -80,7 +80,6 @@ func checkJobsOfRun(ctx context.Context, runID int64) error {
} }
if len(jobs) > 0 { if len(jobs) > 0 {
runUpdated := true runUpdated := true
run := jobs[0].Run
for _, job := range jobs { for _, job := range jobs {
if !job.Status.IsDone() { if !job.Status.IsDone() {
runUpdated = false runUpdated = false
@ -88,6 +87,10 @@ func checkJobsOfRun(ctx context.Context, runID int64) error {
} }
} }
if runUpdated { if runUpdated {
// Sync run status with db
jobs[0].Run = nil
jobs[0].LoadAttributes(ctx)
run := jobs[0].Run
notify_service.WorkflowRunStatusUpdate(ctx, run.Repo, run.TriggerUser, run) notify_service.WorkflowRunStatusUpdate(ctx, run.Repo, run.TriggerUser, run)
} }
} }