aboutsummaryrefslogtreecommitdiffstats
path: root/models/actions/run.go
diff options
context:
space:
mode:
authoryp05327 <576951401@qq.com>2024-01-19 23:05:49 +0900
committerGitHub <noreply@github.com>2024-01-19 14:05:49 +0000
commit07ba4d9f87cf21b7ce87158ae5651cae3bb35604 (patch)
tree904dfbc3abee4d273ec123c28a58675d415f9b3a /models/actions/run.go
parent461d8b53c2e51a8a6a1715ba40ac61d7e9f93971 (diff)
downloadgitea-07ba4d9f87cf21b7ce87158ae5651cae3bb35604.tar.gz
gitea-07ba4d9f87cf21b7ce87158ae5651cae3bb35604.zip
Fix incorrect action duration time when rerun the job before executed once (#28364)
Fix #28323 Reason was mentioned here: https://github.com/go-gitea/gitea/issues/28323#issuecomment-1841867298 ### Changes: (maybe breaking) We can rerun jobs in Gitea, so there will be some problems in calculating duration time. In this PR, I use the exist `Started` and `Stopped` column to record the last run time instead of the total time, and add a new `PreviousDuration` column to record the previous duration time. You can also check the cost time of last run: ![image](https://github.com/go-gitea/gitea/assets/18380374/2ca39145-2c92-401a-b78b-43164f7ae061)
Diffstat (limited to 'models/actions/run.go')
-rw-r--r--models/actions/run.go13
1 files changed, 8 insertions, 5 deletions
diff --git a/models/actions/run.go b/models/actions/run.go
index 1a3701b0b0..fcac58d515 100644
--- a/models/actions/run.go
+++ b/models/actions/run.go
@@ -46,10 +46,13 @@ type ActionRun struct {
TriggerEvent string // the trigger event defined in the `on` configuration of the triggered workflow
Status Status `xorm:"index"`
Version int `xorm:"version default 0"` // Status could be updated concomitantly, so an optimistic lock is needed
- Started timeutil.TimeStamp
- Stopped timeutil.TimeStamp
- Created timeutil.TimeStamp `xorm:"created"`
- Updated timeutil.TimeStamp `xorm:"updated"`
+ // Started and Stopped is used for recording last run time, if rerun happened, they will be reset to 0
+ Started timeutil.TimeStamp
+ Stopped timeutil.TimeStamp
+ // PreviousDuration is used for recording previous duration
+ PreviousDuration time.Duration
+ Created timeutil.TimeStamp `xorm:"created"`
+ Updated timeutil.TimeStamp `xorm:"updated"`
}
func init() {
@@ -118,7 +121,7 @@ func (run *ActionRun) LoadAttributes(ctx context.Context) error {
}
func (run *ActionRun) Duration() time.Duration {
- return calculateDuration(run.Started, run.Stopped, run.Status)
+ return calculateDuration(run.Started, run.Stopped, run.Status) + run.PreviousDuration
}
func (run *ActionRun) GetPushEventPayload() (*api.PushPayload, error) {