Files
aiops/backend/model/build_node.go
T
2026-07-09 14:16:56 +08:00

62 lines
2.5 KiB
Go

package model
import "time"
// BuildNode CI/CD 构建节点(Jenkins Agent 风格,基于 SSH 关联服务器资产) // Logan.Li
type BuildNode struct {
ID uint `gorm:"primarykey" json:"id"`
Name string `gorm:"size:64;not null;uniqueIndex" json:"name"`
Description string `gorm:"size:255" json:"description"`
ServerID uint `gorm:"not null;index" json:"server_id"` // FK → servers
Labels string `gorm:"size:255;comment:标签(逗号分隔,用于调度匹配)" json:"labels,omitempty"`
MaxExecutors int `gorm:"default:2;comment:最大并发构建数" json:"max_executors"`
WorkspacePath string `gorm:"size:255;default:/data/aiops-workspace;comment:远程工作区根目录" json:"workspace_path"`
Enabled bool `gorm:"default:true" json:"enabled"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
// 运行时统计(非持久化,由调度器填充)
RunningCount int `gorm:"-" json:"running_count,omitempty"`
Hostname string `gorm:"-" json:"hostname,omitempty"`
IP string `gorm:"-" json:"ip,omitempty"`
}
func (BuildNode) TableName() string {
return "deploy_build_nodes"
}
// BuildMasterConfig Master 内置构建节点并发配置(单行) // Logan.Li
type BuildMasterConfig struct {
ID uint `gorm:"primarykey" json:"id"`
MaxExecutors int `gorm:"default:2;not null;comment:最大并发(1=串行排队)" json:"max_executors"`
UpdatedAt time.Time `json:"updated_at"`
}
func (BuildMasterConfig) TableName() string { return "deploy_build_master_configs" }
// UpdateBuildMasterRequest 更新 Master 并发数 // Logan.Li
type UpdateBuildMasterRequest struct {
MaxExecutors int `json:"max_executors" binding:"required,min=1,max=32"`
}
// CreateBuildNodeRequest 创建构建节点
type CreateBuildNodeRequest struct {
Name string `json:"name" binding:"required"`
Description string `json:"description"`
ServerID uint `json:"server_id" binding:"required"`
Labels string `json:"labels"`
MaxExecutors int `json:"max_executors"`
WorkspacePath string `json:"workspace_path"`
}
// UpdateBuildNodeRequest 更新构建节点
type UpdateBuildNodeRequest struct {
Name string `json:"name"`
Description string `json:"description"`
ServerID *uint `json:"server_id"`
Labels string `json:"labels"`
MaxExecutors int `json:"max_executors"`
WorkspacePath string `json:"workspace_path"`
Enabled *bool `json:"enabled"`
}