You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
devops/entities/build.go

76 lines
2.6 KiB

3 months ago
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"`
}