177 lines
5.7 KiB
Go
177 lines
5.7 KiB
Go
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||
|
// SPDX-License-Identifier: MIT
|
||
|
|
||
|
package v1_19 //nolint
|
||
|
|
||
|
import (
|
||
|
"code.gitea.io/gitea/models/db"
|
||
|
"code.gitea.io/gitea/modules/timeutil"
|
||
|
|
||
|
"xorm.io/xorm"
|
||
|
)
|
||
|
|
||
|
func AddActionsTables(x *xorm.Engine) error {
|
||
|
type ActionRunner struct {
|
||
|
ID int64
|
||
|
UUID string `xorm:"CHAR(36) UNIQUE"`
|
||
|
Name string `xorm:"VARCHAR(255)"`
|
||
|
OwnerID int64 `xorm:"index"` // org level runner, 0 means system
|
||
|
RepoID int64 `xorm:"index"` // repo level runner, if orgid also is zero, then it's a global
|
||
|
Description string `xorm:"TEXT"`
|
||
|
Base int // 0 native 1 docker 2 virtual machine
|
||
|
RepoRange string // glob match which repositories could use this runner
|
||
|
|
||
|
Token string `xorm:"-"`
|
||
|
TokenHash string `xorm:"UNIQUE"` // sha256 of token
|
||
|
TokenSalt string
|
||
|
// TokenLastEight string `xorm:"token_last_eight"` // it's unnecessary because we don't find runners by token
|
||
|
|
||
|
LastOnline timeutil.TimeStamp `xorm:"index"`
|
||
|
LastActive timeutil.TimeStamp `xorm:"index"`
|
||
|
|
||
|
// Store OS and Artch.
|
||
|
AgentLabels []string
|
||
|
// Store custom labes use defined.
|
||
|
CustomLabels []string
|
||
|
|
||
|
Created timeutil.TimeStamp `xorm:"created"`
|
||
|
Updated timeutil.TimeStamp `xorm:"updated"`
|
||
|
Deleted timeutil.TimeStamp `xorm:"deleted"`
|
||
|
}
|
||
|
|
||
|
type ActionRunnerToken struct {
|
||
|
ID int64
|
||
|
Token string `xorm:"UNIQUE"`
|
||
|
OwnerID int64 `xorm:"index"` // org level runner, 0 means system
|
||
|
RepoID int64 `xorm:"index"` // repo level runner, if orgid also is zero, then it's a global
|
||
|
IsActive bool
|
||
|
|
||
|
Created timeutil.TimeStamp `xorm:"created"`
|
||
|
Updated timeutil.TimeStamp `xorm:"updated"`
|
||
|
Deleted timeutil.TimeStamp `xorm:"deleted"`
|
||
|
}
|
||
|
|
||
|
type ActionRun struct {
|
||
|
ID int64
|
||
|
Title string
|
||
|
RepoID int64 `xorm:"index unique(repo_index)"`
|
||
|
OwnerID int64 `xorm:"index"`
|
||
|
WorkflowID string `xorm:"index"` // the name of workflow file
|
||
|
Index int64 `xorm:"index unique(repo_index)"` // a unique number for each run of a repository
|
||
|
TriggerUserID int64
|
||
|
Ref string
|
||
|
CommitSHA string
|
||
|
Event string
|
||
|
IsForkPullRequest bool
|
||
|
EventPayload string `xorm:"LONGTEXT"`
|
||
|
Status int `xorm:"index"`
|
||
|
Started timeutil.TimeStamp
|
||
|
Stopped timeutil.TimeStamp
|
||
|
Created timeutil.TimeStamp `xorm:"created"`
|
||
|
Updated timeutil.TimeStamp `xorm:"updated"`
|
||
|
}
|
||
|
|
||
|
type ActionRunJob struct {
|
||
|
ID int64
|
||
|
RunID int64 `xorm:"index"`
|
||
|
RepoID int64 `xorm:"index"`
|
||
|
OwnerID int64 `xorm:"index"`
|
||
|
CommitSHA string `xorm:"index"`
|
||
|
IsForkPullRequest bool
|
||
|
Name string `xorm:"VARCHAR(255)"`
|
||
|
Attempt int64
|
||
|
WorkflowPayload []byte
|
||
|
JobID string `xorm:"VARCHAR(255)"` // job id in workflow, not job's id
|
||
|
Needs []string `xorm:"JSON TEXT"`
|
||
|
RunsOn []string `xorm:"JSON TEXT"`
|
||
|
TaskID int64 // the latest task of the job
|
||
|
Status int `xorm:"index"`
|
||
|
Started timeutil.TimeStamp
|
||
|
Stopped timeutil.TimeStamp
|
||
|
Created timeutil.TimeStamp `xorm:"created"`
|
||
|
Updated timeutil.TimeStamp `xorm:"updated index"`
|
||
|
}
|
||
|
|
||
|
type Repository struct {
|
||
|
NumActionRuns int `xorm:"NOT NULL DEFAULT 0"`
|
||
|
NumClosedActionRuns int `xorm:"NOT NULL DEFAULT 0"`
|
||
|
}
|
||
|
|
||
|
type ActionRunIndex db.ResourceIndex
|
||
|
|
||
|
type ActionTask struct {
|
||
|
ID int64
|
||
|
JobID int64
|
||
|
Attempt int64
|
||
|
RunnerID int64 `xorm:"index"`
|
||
|
Status int `xorm:"index"`
|
||
|
Started timeutil.TimeStamp `xorm:"index"`
|
||
|
Stopped timeutil.TimeStamp
|
||
|
|
||
|
RepoID int64 `xorm:"index"`
|
||
|
OwnerID int64 `xorm:"index"`
|
||
|
CommitSHA string `xorm:"index"`
|
||
|
IsForkPullRequest bool
|
||
|
|
||
|
TokenHash string `xorm:"UNIQUE"` // sha256 of token
|
||
|
TokenSalt string
|
||
|
TokenLastEight string `xorm:"index token_last_eight"`
|
||
|
|
||
|
LogFilename string // file name of log
|
||
|
LogInStorage bool // read log from database or from storage
|
||
|
LogLength int64 // lines count
|
||
|
LogSize int64 // blob size
|
||
|
LogIndexes []int64 `xorm:"LONGBLOB"` // line number to offset
|
||
|
LogExpired bool // files that are too old will be deleted
|
||
|
|
||
|
Created timeutil.TimeStamp `xorm:"created"`
|
||
|
Updated timeutil.TimeStamp `xorm:"updated index"`
|
||
|
}
|
||
|
|
||
|
type ActionTaskStep struct {
|
||
|
ID int64
|
||
|
Name string `xorm:"VARCHAR(255)"`
|
||
|
TaskID int64 `xorm:"index unique(task_index)"`
|
||
|
Index int64 `xorm:"index unique(task_index)"`
|
||
|
RepoID int64 `xorm:"index"`
|
||
|
Status int `xorm:"index"`
|
||
|
LogIndex int64
|
||
|
LogLength int64
|
||
|
Started timeutil.TimeStamp
|
||
|
Stopped timeutil.TimeStamp
|
||
|
Created timeutil.TimeStamp `xorm:"created"`
|
||
|
Updated timeutil.TimeStamp `xorm:"updated"`
|
||
|
}
|
||
|
|
||
|
type dbfsMeta struct {
|
||
|
ID int64 `xorm:"pk autoincr"`
|
||
|
FullPath string `xorm:"VARCHAR(500) UNIQUE NOT NULL"`
|
||
|
BlockSize int64 `xorm:"BIGINT NOT NULL"`
|
||
|
FileSize int64 `xorm:"BIGINT NOT NULL"`
|
||
|
CreateTimestamp int64 `xorm:"BIGINT NOT NULL"`
|
||
|
ModifyTimestamp int64 `xorm:"BIGINT NOT NULL"`
|
||
|
}
|
||
|
|
||
|
type dbfsData struct {
|
||
|
ID int64 `xorm:"pk autoincr"`
|
||
|
Revision int64 `xorm:"BIGINT NOT NULL"`
|
||
|
MetaID int64 `xorm:"BIGINT index(meta_offset) NOT NULL"`
|
||
|
BlobOffset int64 `xorm:"BIGINT index(meta_offset) NOT NULL"`
|
||
|
BlobSize int64 `xorm:"BIGINT NOT NULL"`
|
||
|
BlobData []byte `xorm:"BLOB NOT NULL"`
|
||
|
}
|
||
|
|
||
|
return x.Sync(
|
||
|
new(ActionRunner),
|
||
|
new(ActionRunnerToken),
|
||
|
new(ActionRun),
|
||
|
new(ActionRunJob),
|
||
|
new(Repository),
|
||
|
new(ActionRunIndex),
|
||
|
new(ActionTask),
|
||
|
new(ActionTaskStep),
|
||
|
new(dbfsMeta),
|
||
|
new(dbfsData),
|
||
|
)
|
||
|
}
|