diff --git a/models/bots/run.go b/models/bots/run.go index c3f10f7870..45eb7d675e 100644 --- a/models/bots/run.go +++ b/models/bots/run.go @@ -84,7 +84,11 @@ func (run *Run) LoadAttributes(ctx context.Context) error { } func (run *Run) TakeTime() time.Duration { - return run.Started.AsTime().Sub(run.Stopped.AsTime()) + started := run.Started.AsTime() + if run.Status.IsDone() { + return run.Stopped.AsTime().Sub(started) + } + return time.Since(started) } func updateRepoRunsNumbers(ctx context.Context, repo *repo_model.Repository) error { diff --git a/models/bots/run_job.go b/models/bots/run_job.go index f4df80bfdd..611d2ca438 100644 --- a/models/bots/run_job.go +++ b/models/bots/run_job.go @@ -105,12 +105,20 @@ func UpdateRunJob(ctx context.Context, job *RunJob, cols ...string) error { return nil } + if job.RunID == 0 { + var err error + if job, err = GetRunJobByID(ctx, job.ID); err != nil { + return err + } + } + jobs, err := GetRunJobsByRunID(ctx, job.RunID) if err != nil { return err } runStatus := aggregateJobStatus(jobs) + run := &Run{ ID: job.RunID, Status: runStatus, diff --git a/modules/notification/bots/bots.go b/modules/notification/bots/bots.go index ef07f2323f..798b9270cf 100644 --- a/modules/notification/bots/bots.go +++ b/modules/notification/bots/bots.go @@ -25,6 +25,7 @@ import ( "code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/gitea/modules/structs" + "code.gitea.io/gitea/modules/timeutil" "github.com/nektos/act/pkg/jobparser" ) @@ -94,6 +95,7 @@ func notify(repo *repo_model.Repository, doer *user_model.User, payload, ref str Event: evt, EventPayload: payload, Status: bots_model.StatusWaiting, + Started: timeutil.TimeStampNow(), } if len(run.Title) > 255 { run.Title = run.Title[:255]