chore(model): create build, stage, step and logs table

Signed-off-by: Bo-Yi.Wu <appleboy.tw@gmail.com>
This commit is contained in:
Bo-Yi.Wu
2022-09-01 11:03:50 +08:00
committed by Jason Song
parent e05f224d19
commit e07d416366
7 changed files with 66 additions and 31 deletions

View File

@@ -85,7 +85,7 @@ func (Build) TableName() string {
}
func (t *Build) HTMLURL() string {
return fmt.Sprintf("")
return ""
}
func updateRepoBuildsNumbers(ctx context.Context, repo *repo_model.Repository) error {
@@ -132,18 +132,18 @@ func InsertBuild(t *Build, workflowsStatuses map[string]map[string]BuildStatus)
return err
}
var buildJobs []BuildJob
var buildStages []BuildStage
for filename, workflow := range workflowsStatuses {
for job, status := range workflow {
buildJobs = append(buildJobs, BuildJob{
buildStages = append(buildStages, BuildStage{
BuildID: t.ID,
Filename: filename,
Jobname: job,
Name: job,
Status: status,
})
}
}
if err := db.Insert(ctx, buildJobs); err != nil {
if err := db.Insert(ctx, buildStages); err != nil {
return err
}

View File

@@ -13,11 +13,10 @@ import (
// BuildLog represents a build's log, every build has a standalone table
type BuildLog struct {
ID int64
BuildJobID int64 `xorm:"index"`
LineNumber int
Content string `xorm:"LONGTEXT"`
Created timeutil.TimeStamp `xorm:"created"`
ID int64
StepID int64 `xorm:"index"`
Content string `xorm:"BINARY"`
Created timeutil.TimeStamp `xorm:"created"`
}
func init() {
@@ -37,7 +36,7 @@ func CreateBuildLog(buildID int64) error {
func GetBuildLogs(buildID, jobID int64) (logs []BuildLog, err error) {
err = db.GetEngine(db.DefaultContext).Table(GetBuildLogTableName(buildID)).
Where("build_job_id=?", jobID).
Where("build_step_id=?", jobID).
Find(&logs)
return
}

View File

@@ -9,33 +9,38 @@ import (
"code.gitea.io/gitea/modules/timeutil"
)
type BuildJob struct {
type BuildStage struct {
ID int64
BuildID int64 `xorm:"index"`
Number int64
Name string
Kind string
Type string
Filename string
Jobname string
Status BuildStatus
Started timeutil.TimeStamp
Stopped timeutil.TimeStamp
LogToFile bool // read log from database or from storage
Created timeutil.TimeStamp `xorm:"created"`
}
func (bj BuildJob) TableName() string {
return "bots_build_job"
func (bj BuildStage) TableName() string {
return "bots_build_stage"
}
func init() {
db.RegisterModel(new(BuildJob))
db.RegisterModel(new(BuildStage))
}
func GetBuildWorkflows(buildID int64) (map[string]map[string]*BuildJob, error) {
jobs := make(map[string]map[string]*BuildJob)
err := db.GetEngine(db.DefaultContext).Iterate(new(BuildJob), func(idx int, bean interface{}) error {
job := bean.(*BuildJob)
func GetBuildWorkflows(buildID int64) (map[string]map[string]*BuildStage, error) {
jobs := make(map[string]map[string]*BuildStage)
err := db.GetEngine(db.DefaultContext).Iterate(new(BuildStage), func(idx int, bean interface{}) error {
job := bean.(*BuildStage)
_, ok := jobs[job.Filename]
if !ok {
jobs[job.Filename] = make(map[string]*BuildJob)
jobs[job.Filename] = make(map[string]*BuildStage)
}
jobs[job.Filename][job.Jobname] = job
jobs[job.Filename][job.Name] = job
return nil
})
return jobs, err

31
models/bots/build_step.go Normal file
View File

@@ -0,0 +1,31 @@
// Copyright 2022 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package bots
import (
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/modules/timeutil"
)
type BuildStep struct {
ID int64
StageID int64 `xorm:"index"`
Number int64
Name string
Kind string
Type string
Status BuildStatus
Started timeutil.TimeStamp
Stopped timeutil.TimeStamp
Created timeutil.TimeStamp `xorm:"created"`
}
func (bj BuildStep) TableName() string {
return "bots_build_step"
}
func init() {
db.RegisterModel(new(BuildStep))
}

View File

@@ -77,8 +77,6 @@ func (runners RunnerList) LoadAttributes(ctx context.Context) error {
if err := runners.LoadOwners(ctx); err != nil {
return err
}
if err := runners.LoadRepos(ctx); err != nil {
return err
}
return nil
return runners.LoadRepos(ctx)
}