mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			140 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// 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 migrations
 | 
						|
 | 
						|
import (
 | 
						|
	"code.gitea.io/gitea/models/db"
 | 
						|
	"code.gitea.io/gitea/modules/timeutil"
 | 
						|
	"xorm.io/xorm"
 | 
						|
)
 | 
						|
 | 
						|
func addBotTables(x *xorm.Engine) error {
 | 
						|
	type BotsRunner struct {
 | 
						|
		ID          int64
 | 
						|
		UUID        string `xorm:"CHAR(36) UNIQUE"`
 | 
						|
		Name        string `xorm:"VARCHAR(32) 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
 | 
						|
		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:"CHAR(36) UNIQUE"`
 | 
						|
 | 
						|
		// instance status (idle, active, offline)
 | 
						|
		Status int32
 | 
						|
		// Store OS and Artch.
 | 
						|
		AgentLabels []string
 | 
						|
		// Store custom labes use defined.
 | 
						|
		CustomLabels []string
 | 
						|
 | 
						|
		LastOnline timeutil.TimeStamp `xorm:"index"`
 | 
						|
		Created    timeutil.TimeStamp `xorm:"created"`
 | 
						|
		Updated    timeutil.TimeStamp `xorm:"updated"`
 | 
						|
		Deleted    timeutil.TimeStamp `xorm:"deleted"`
 | 
						|
	}
 | 
						|
 | 
						|
	type BotsRunnerToken struct {
 | 
						|
		ID       int64
 | 
						|
		Token    string `xorm:"CHAR(36) 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 BotsRun struct {
 | 
						|
		ID            int64
 | 
						|
		Title         string
 | 
						|
		RepoID        int64  `xorm:"index unique(repo_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
 | 
						|
		Token         string // token for this task
 | 
						|
		Grant         string // permissions for this task
 | 
						|
		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 BotsRunJob struct {
 | 
						|
		ID              int64
 | 
						|
		RunID           int64 `xorm:"index"`
 | 
						|
		Name            string
 | 
						|
		Ready           bool // ready to be executed
 | 
						|
		Attempt         int64
 | 
						|
		WorkflowPayload []byte
 | 
						|
		JobID           string   // job id in workflow, not job's id
 | 
						|
		Needs           []int64  `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"`
 | 
						|
	}
 | 
						|
 | 
						|
	type Repository struct {
 | 
						|
		NumRuns       int `xorm:"NOT NULL DEFAULT 0"`
 | 
						|
		NumClosedRuns int `xorm:"NOT NULL DEFAULT 0"`
 | 
						|
	}
 | 
						|
 | 
						|
	type BotsRunIndex db.ResourceIndex
 | 
						|
 | 
						|
	type BotsTask struct {
 | 
						|
		ID           int64
 | 
						|
		JobID        int64
 | 
						|
		Attempt      int64
 | 
						|
		RunnerID     int64 `xorm:"index"`
 | 
						|
		Result       int32
 | 
						|
		Status       int `xorm:"index"`
 | 
						|
		Started      timeutil.TimeStamp
 | 
						|
		Stopped      timeutil.TimeStamp
 | 
						|
		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:"BLOB"` // line number to offset
 | 
						|
		LogExpired   bool
 | 
						|
		Created      timeutil.TimeStamp `xorm:"created"`
 | 
						|
		Updated      timeutil.TimeStamp `xorm:"updated"`
 | 
						|
	}
 | 
						|
 | 
						|
	type BotsTaskStep struct {
 | 
						|
		ID        int64
 | 
						|
		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
 | 
						|
		Started   timeutil.TimeStamp
 | 
						|
		Stopped   timeutil.TimeStamp
 | 
						|
		Created   timeutil.TimeStamp `xorm:"created"`
 | 
						|
		Updated   timeutil.TimeStamp `xorm:"updated"`
 | 
						|
	}
 | 
						|
 | 
						|
	return x.Sync2(
 | 
						|
		new(BotsRunner),
 | 
						|
		new(BotsRunnerToken),
 | 
						|
		new(BotsRun),
 | 
						|
		new(BotsRunJob),
 | 
						|
		new(Repository),
 | 
						|
		new(BotsRunIndex),
 | 
						|
		new(BotsTask),
 | 
						|
		new(BotsTaskStep),
 | 
						|
	)
 | 
						|
}
 |