feat: 工具配置增强、站点拨测与日志中心多项改进

- 工具配置:新增卸载 API/UI、Go 工具链、流水线构建自动安装依赖
- 修复 ListTools VerifyTool 递归栈溢出导致获取工具配置失败
- Node.js Alpine 安装改用 unofficial-builds musl 预编译包与 index.json 解析 LTS
- 站点拨测:详情页路由、告警自动恢复、并发拨测与默认可观测频率
- 日志中心:RBAC、查询构建器、ES/Loki 增强与审计 request/response 展示
- 发布配置:构建节点、流水线远程执行、Deploy RBAC 导航拆分
This commit is contained in:
Logan committed 2026-07-02 07:47:33 +08:00
1 parent cde7bbe540
commit 7e1c8f583c
84 files changed
+7729 -1507

No files matched your search

+61
View File
@@ -0,0 +1,61 @@
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_config" }
// 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"`
}