chore: remove Result from task and step

This commit is contained in:
Jason Song 2022-11-18 12:26:34 +08:00
parent dd417a3270
commit 0f5aab0c1a
6 changed files with 33 additions and 27 deletions

View File

@ -148,7 +148,7 @@ func InsertRun(run *Run, jobs []*jobparser.SingleWorkflow) error {
}
run.Index = index
if run.Status == StatusUnknown {
if run.Status.IsUnknown() {
run.Status = StatusWaiting
}

View File

@ -4,6 +4,8 @@
package bots
import runnerv1 "gitea.com/gitea/proto-go/runner/v1"
// Status represents the status of Run, RunJob, Task, or TaskStep
type Status int
@ -13,9 +15,9 @@ const (
StatusFailure // 2, consistent with runnerv1.Result_RESULT_FAILURE
StatusCancelled // 3, consistent with runnerv1.Result_RESULT_CANCELLED
StatusSkipped // 4, consistent with runnerv1.Result_RESULT_SKIPPED
StatusWaiting // 5
StatusRunning // 6
StatusBlocked // 7
StatusWaiting // 5, isn't a runnerv1.Result
StatusRunning // 6, isn't a runnerv1.Result
StatusBlocked // 7, isn't a runnerv1.Result
)
// String returns the string name of the Status
@ -33,6 +35,10 @@ func (s Status) HasRun() bool {
return s.In(StatusSuccess, StatusFailure)
}
func (s Status) IsUnknown() bool {
return s == StatusUnknown
}
func (s Status) IsSuccess() bool {
return s == StatusSuccess
}
@ -66,6 +72,13 @@ func (s Status) In(statuses ...Status) bool {
return false
}
func (s Status) AsResult() runnerv1.Result {
if s.IsDone() {
return runnerv1.Result(s)
}
return runnerv1.Result_RESULT_UNSPECIFIED
}
var statusNames = map[Status]string{
StatusUnknown: "unknown",
StatusWaiting: "waiting",

View File

@ -39,7 +39,6 @@ type Task struct {
Steps []*TaskStep `xorm:"-"`
Attempt int64
RunnerID int64 `xorm:"index"`
Result runnerv1.Result
Status Status `xorm:"index"`
Started timeutil.TimeStamp `xorm:"index"`
Stopped timeutil.TimeStamp
@ -435,9 +434,8 @@ func UpdateTaskByState(state *runnerv1.TaskState) (*Task, error) {
return nil, err
}
task.Result = state.Result
if task.Result != runnerv1.Result_RESULT_UNSPECIFIED {
task.Status = Status(task.Result)
if state.Result != runnerv1.Result_RESULT_UNSPECIFIED {
task.Status = Status(state.Result)
task.Stopped = timeutil.TimeStamp(state.StoppedAt.AsTime().Unix())
if _, err := UpdateRunJob(ctx, &RunJob{
ID: task.JobID,
@ -458,15 +456,16 @@ func UpdateTaskByState(state *runnerv1.TaskState) (*Task, error) {
prevStepDone := true
for _, step := range task.Steps {
var result runnerv1.Result
if v, ok := stepStates[step.Number]; ok {
step.Result = v.Result
result = v.Result
step.LogIndex = v.LogIndex
step.LogLength = v.LogLength
step.Started = convertTimestamp(v.StartedAt)
step.Stopped = convertTimestamp(v.StoppedAt)
}
if step.Result != runnerv1.Result_RESULT_UNSPECIFIED {
step.Status = Status(step.Result)
if result != runnerv1.Result_RESULT_UNSPECIFIED {
step.Status = Status(result)
prevStepDone = true
} else if prevStepDone {
step.Status = StatusRunning
@ -494,9 +493,8 @@ func StopTask(ctx context.Context, task *Task, result runnerv1.Result) (*Task, e
e := db.GetEngine(ctx)
now := timeutil.TimeStampNow()
task.Result = result
if task.Result != runnerv1.Result_RESULT_UNSPECIFIED {
task.Status = Status(task.Result)
if result != runnerv1.Result_RESULT_UNSPECIFIED {
task.Status = Status(result)
task.Stopped = now
if _, err := UpdateRunJob(ctx, &RunJob{
ID: task.JobID,
@ -516,8 +514,7 @@ func StopTask(ctx context.Context, task *Task, result runnerv1.Result) (*Task, e
}
for _, step := range task.Steps {
if step.Result == runnerv1.Result_RESULT_UNSPECIFIED {
step.Result = result
if !step.Status.IsDone() {
step.Status = Status(result)
if step.Started == 0 {
step.Started = now

View File

@ -10,7 +10,6 @@ import (
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/modules/timeutil"
runnerv1 "gitea.com/gitea/proto-go/runner/v1"
)
// TaskStep represents a step of Task
@ -19,7 +18,6 @@ type TaskStep struct {
Name string
TaskID int64 `xorm:"index unique(task_number)"`
Number int64 `xorm:"index unique(task_number)"`
Result runnerv1.Result
Status Status `xorm:"index"`
LogIndex int64
LogLength int64

View File

@ -105,7 +105,6 @@ func addBotTables(x *xorm.Engine) error {
JobID int64
Attempt int64
RunnerID int64 `xorm:"index"`
Result int32
Status int `xorm:"index"`
Started timeutil.TimeStamp `xorm:"index"`
Stopped timeutil.TimeStamp
@ -134,7 +133,6 @@ func addBotTables(x *xorm.Engine) error {
Name string
TaskID int64 `xorm:"index unique(task_number)"`
Number int64 `xorm:"index unique(task_number)"`
Result int32
Status int `xorm:"index"`
LogIndex int64
LogLength int64

View File

@ -165,11 +165,11 @@ func (s *Service) UpdateTask(
if err != nil {
return nil, status.Errorf(codes.Internal, "can't find the task: %v", err)
}
if task.Result == runnerv1.Result_RESULT_CANCELLED {
if task.Status.IsCancelled() {
return connect.NewResponse(&runnerv1.UpdateTaskResponse{
State: &runnerv1.TaskState{
Id: req.Msg.State.Id,
Result: task.Result,
Result: task.Status.AsResult(),
},
}), nil
}