mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-21 12:55:23 +02:00
refactor: move build status to core package
This commit is contained in:
parent
ea0cf8515e
commit
1148903d79
@ -16,6 +16,7 @@ import (
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/routers/api/bots/core"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"xorm.io/builder"
|
||||
@ -26,39 +27,6 @@ func init() {
|
||||
db.RegisterModel(new(BuildIndex))
|
||||
}
|
||||
|
||||
// BuildStatus represents a build status
|
||||
type BuildStatus string
|
||||
|
||||
// enumerate all the statuses of bot build
|
||||
const (
|
||||
StatusSkipped BuildStatus = "skipped"
|
||||
StatusBlocked BuildStatus = "blocked"
|
||||
StatusDeclined BuildStatus = "declined"
|
||||
StatusWaiting BuildStatus = "waiting_on_dependencies"
|
||||
StatusPending BuildStatus = "pending"
|
||||
StatusRunning BuildStatus = "running"
|
||||
StatusPassing BuildStatus = "success"
|
||||
StatusFailing BuildStatus = "failure"
|
||||
StatusKilled BuildStatus = "killed"
|
||||
StatusError BuildStatus = "error"
|
||||
)
|
||||
|
||||
func (status BuildStatus) IsPending() bool {
|
||||
return status == StatusPending
|
||||
}
|
||||
|
||||
func (status BuildStatus) IsRunning() bool {
|
||||
return status == StatusRunning
|
||||
}
|
||||
|
||||
func (status BuildStatus) IsFailed() bool {
|
||||
return status == StatusFailing || status == StatusKilled || status == StatusError
|
||||
}
|
||||
|
||||
func (status BuildStatus) IsSuccess() bool {
|
||||
return status == StatusPassing
|
||||
}
|
||||
|
||||
// Build represnets bot build task
|
||||
type Build struct {
|
||||
ID int64
|
||||
@ -75,7 +43,7 @@ type Build struct {
|
||||
Grant string // permissions for this task
|
||||
EventPayload string `xorm:"LONGTEXT"`
|
||||
RunnerID int64 `xorm:"index"`
|
||||
Status BuildStatus `xorm:"index"`
|
||||
Status core.BuildStatus `xorm:"index"`
|
||||
Created timeutil.TimeStamp `xorm:"created"`
|
||||
StartTime timeutil.TimeStamp
|
||||
EndTime timeutil.TimeStamp
|
||||
@ -102,7 +70,7 @@ func updateRepoBuildsNumbers(ctx context.Context, repo *repo_model.Repository) e
|
||||
Where(builder.Eq{
|
||||
"repo_id": repo.ID,
|
||||
}.And(
|
||||
builder.In("status", StatusFailing, StatusKilled, StatusPassing),
|
||||
builder.In("status", core.StatusFailing, core.StatusKilled, core.StatusPassing),
|
||||
),
|
||||
),
|
||||
).
|
||||
@ -111,7 +79,7 @@ func updateRepoBuildsNumbers(ctx context.Context, repo *repo_model.Repository) e
|
||||
}
|
||||
|
||||
// InsertBuild inserts a bot build task
|
||||
func InsertBuild(t *Build, workflowsStatuses map[string]map[string]BuildStatus) error {
|
||||
func InsertBuild(t *Build, workflowsStatuses map[string]map[string]core.BuildStatus) error {
|
||||
if t.UUID == "" {
|
||||
t.UUID = uuid.New().String()
|
||||
}
|
||||
@ -196,7 +164,7 @@ func GetCurBuildByID(runnerID int64) (*Build, error) {
|
||||
var builds []Build
|
||||
err := db.GetEngine(db.DefaultContext).
|
||||
Where("runner_id=?", runnerID).
|
||||
And("status=?", StatusPending).
|
||||
And("status=?", core.StatusPending).
|
||||
Asc("created").
|
||||
Find(&builds)
|
||||
if err != nil {
|
||||
@ -263,9 +231,9 @@ func (opts FindBuildOptions) toConds() builder.Cond {
|
||||
cond = cond.And(builder.Eq{"repo_id": opts.RepoID})
|
||||
}
|
||||
if opts.IsClosed.IsTrue() {
|
||||
cond = cond.And(builder.Expr("status IN (?,?,?,?)", StatusError, StatusFailing, StatusPassing))
|
||||
cond = cond.And(builder.Expr("status IN (?,?,?,?)", core.StatusError, core.StatusFailing, core.StatusPassing))
|
||||
} else if opts.IsClosed.IsFalse() {
|
||||
cond = cond.And(builder.Expr("status IN (?,?,?)", StatusPending, StatusRunning))
|
||||
cond = cond.And(builder.Expr("status IN (?,?,?)", core.StatusPending, core.StatusRunning))
|
||||
}
|
||||
return cond
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import (
|
||||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/routers/api/bots/core"
|
||||
"xorm.io/builder"
|
||||
)
|
||||
|
||||
@ -24,7 +25,7 @@ type BuildStage struct {
|
||||
OS string
|
||||
Arch string
|
||||
Filename string
|
||||
Status BuildStatus
|
||||
Status core.BuildStatus
|
||||
Started timeutil.TimeStamp
|
||||
Stopped timeutil.TimeStamp
|
||||
LogToFile bool // read log from database or from storage
|
||||
@ -51,9 +52,9 @@ func (opts FindStageOptions) toConds() builder.Cond {
|
||||
cond = cond.And(builder.Eq{"build_id": opts.BuildID})
|
||||
}
|
||||
if opts.IsClosed.IsTrue() {
|
||||
cond = cond.And(builder.Expr("status IN (?,?,?,?)", StatusError, StatusFailing, StatusPassing))
|
||||
cond = cond.And(builder.Expr("status IN (?,?,?,?)", core.StatusError, core.StatusFailing, core.StatusPassing))
|
||||
} else if opts.IsClosed.IsFalse() {
|
||||
cond = cond.And(builder.Expr("status IN (?,?,?)", StatusPending, StatusRunning))
|
||||
cond = cond.And(builder.Expr("status IN (?,?,?)", core.StatusPending, core.StatusRunning))
|
||||
}
|
||||
return cond
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ package bots
|
||||
import (
|
||||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
"code.gitea.io/gitea/routers/api/bots/core"
|
||||
)
|
||||
|
||||
type BuildStep struct {
|
||||
@ -16,7 +17,7 @@ type BuildStep struct {
|
||||
Name string
|
||||
Kind string
|
||||
Type string
|
||||
Status BuildStatus
|
||||
Status core.BuildStatus
|
||||
Started timeutil.TimeStamp
|
||||
Stopped timeutil.TimeStamp
|
||||
Created timeutil.TimeStamp `xorm:"created"`
|
||||
|
@ -26,6 +26,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/routers/api/bots/core"
|
||||
bots_service "code.gitea.io/gitea/services/bots"
|
||||
)
|
||||
|
||||
@ -83,11 +84,11 @@ func notify(repo *repo_model.Repository, doer *user_model.User, payload, ref str
|
||||
return
|
||||
}
|
||||
|
||||
workflowsStatuses := make(map[string]map[string]bots_model.BuildStatus)
|
||||
workflowsStatuses := make(map[string]map[string]core.BuildStatus)
|
||||
for i, entry := range matchedEntries {
|
||||
taskStatuses := make(map[string]bots_model.BuildStatus)
|
||||
taskStatuses := make(map[string]core.BuildStatus)
|
||||
for k := range jobs[i] {
|
||||
taskStatuses[k] = bots_model.StatusPending
|
||||
taskStatuses[k] = core.StatusPending
|
||||
}
|
||||
workflowsStatuses[entry.Name()] = taskStatuses
|
||||
}
|
||||
@ -98,7 +99,7 @@ func notify(repo *repo_model.Repository, doer *user_model.User, payload, ref str
|
||||
TriggerUserID: doer.ID,
|
||||
Event: evt,
|
||||
EventPayload: payload,
|
||||
Status: bots_model.StatusPending,
|
||||
Status: core.StatusPending,
|
||||
Ref: ref,
|
||||
CommitSHA: commit.ID.String(),
|
||||
}
|
||||
|
34
routers/api/bots/core/status.go
Normal file
34
routers/api/bots/core/status.go
Normal file
@ -0,0 +1,34 @@
|
||||
package core
|
||||
|
||||
// BuildStatus represents a build status
|
||||
type BuildStatus string
|
||||
|
||||
// enumerate all the statuses of bot build
|
||||
const (
|
||||
StatusSkipped BuildStatus = "skipped"
|
||||
StatusBlocked BuildStatus = "blocked"
|
||||
StatusDeclined BuildStatus = "declined"
|
||||
StatusWaiting BuildStatus = "waiting_on_dependencies"
|
||||
StatusPending BuildStatus = "pending"
|
||||
StatusRunning BuildStatus = "running"
|
||||
StatusPassing BuildStatus = "success"
|
||||
StatusFailing BuildStatus = "failure"
|
||||
StatusKilled BuildStatus = "killed"
|
||||
StatusError BuildStatus = "error"
|
||||
)
|
||||
|
||||
func (status BuildStatus) IsPending() bool {
|
||||
return status == StatusPending
|
||||
}
|
||||
|
||||
func (status BuildStatus) IsRunning() bool {
|
||||
return status == StatusRunning
|
||||
}
|
||||
|
||||
func (status BuildStatus) IsFailed() bool {
|
||||
return status == StatusFailing || status == StatusKilled || status == StatusError
|
||||
}
|
||||
|
||||
func (status BuildStatus) IsSuccess() bool {
|
||||
return status == StatusPassing
|
||||
}
|
@ -100,7 +100,7 @@ func (q *queue) signal(ctx context.Context) error {
|
||||
q.Lock()
|
||||
defer q.Unlock()
|
||||
for _, item := range items {
|
||||
if item.Status == bots.StatusRunning {
|
||||
if item.Status == core.StatusRunning {
|
||||
continue
|
||||
}
|
||||
if item.Machine != "" {
|
||||
|
@ -15,6 +15,7 @@ import (
|
||||
"code.gitea.io/gitea/modules/json"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
"code.gitea.io/gitea/routers/api/bots/core"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
@ -116,9 +117,9 @@ func handleVersion1(r *http.Request, c *websocket.Conn, mt int, message []byte,
|
||||
}
|
||||
cols := []string{"status", "end_time"}
|
||||
if msg.ErrCode == 0 {
|
||||
build.Status = bots_model.StatusPassing
|
||||
build.Status = core.StatusPassing
|
||||
} else {
|
||||
build.Status = bots_model.StatusFailing
|
||||
build.Status = core.StatusFailing
|
||||
}
|
||||
build.EndTime = timeutil.TimeStampNow()
|
||||
if err := bots_model.UpdateBuild(build, cols...); err != nil {
|
||||
|
Loading…
x
Reference in New Issue
Block a user