package entities import ( "devops/util/dts" "time" ) // BuildStatus 构建状态 type BuildStatus string const ( BuildPending BuildStatus = "pending" // 等待运行 BuildRunning BuildStatus = "running" // 正在运行 BuildSuccess BuildStatus = "success" // 构建成功 BuildFailure BuildStatus = "failure" // 构建失败 BuildAborted BuildStatus = "aborted" // 构建中断 ) // Build 项目构建 type Build struct { // 构建编号 ID string `json:"id" gorm:"primaryKey"` // 构建项目 ProjectID string `json:"projectId"` // 关联项目,如果项目删除也删除 Project *Project `json:"project,omitempty" gorm:"foreignKey:ProjectID;references:ID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"` // 使用的仓库分支名称 Branch string `json:"branch"` // 构建时,项目最后一次提交的 commit 标识 CommitId string `json:"commitId"` // 构建时,项目最后一次提交的 commit 信息 CommitText string `json:"commitText"` // 构建项目时的标准输出内容(不包含构建步骤的) Stdout string `json:"stdout"` // 构建项目时的错误输出内容(不包含构建步骤的) Stderr string `json:"startedError"` // 项目构建步骤 Steps []BuildStep `json:"steps"` // 启动构建程序的用户的编号,如果是通过 webhook 修改,会被置空 StartedBy dts.NullUint `json:"startedBy"` // 启动构建项目时的时间 StartedAt time.Time `json:"startedAt"` // 手动停止该项目构建的用户的编号,自动完成会将该值置空。 StoppedBy dts.NullUint `json:"stoppedBy"` // 手动停止或自动完成该项目构建时的时间 StoppedAt time.Time `json:"stoppedAt"` // 当前所处状态 Status BuildStatus `json:"status"` } // BuildStep 构建步骤日志 type BuildStep struct { // 日志编号 Id uint `json:"id" gorm:"primaryKey"` // 归属的构建编号 BuildID string `json:"buildId"` // 关联项目,如果项目删除也删除 Build *Build `json:"build,omitempty" gorm:"foreignKey:BuildID;references:ID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"` // 构建步骤名称 Name string `json:"name"` // 运行构建步骤的命令 Run string `json:"run"` // 运行构建步骤时的环境变量 Env map[string]string `json:"env" gorm:"serializer:json"` // 构建步骤的标准输出内容 Stdout string `json:"stdout"` // 构建步骤的错误输出内容 Stderr string `json:"stderr"` // 开始该步骤时的时间 StartedAt time.Time `json:"startedAt"` // 结束该步骤时的时间 StoppedAt time.Time `json:"stoppedAt"` // 当前所处状态 Status BuildStatus `json:"status"` }