using Dpz.Core.Entity.Base;
using Dpz.Core.EnumLibrary;
using Dpz.Core.EnumLibrary.Pipeline;
namespace Dpz.Core.Public.Entity.Pipeline;
/// <summary>
/// CI/CD 历史记录(Id 即构建运行的 runId,与 SignalR 分组一一对应)
/// </summary>
public class PipelineHistory : BaseEntity
{
/// <summary>
/// 构建、发布开始时间
/// </summary>
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime StartTime { get; set; }
/// <summary>
/// 构建、发布结束时间
/// </summary>
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime EndTime { get; set; }
/// <summary>
/// 总耗时(毫秒)
/// </summary>
public long DurationMs { get; set; }
/// <summary>
/// 构建、发布状态
/// </summary>
[BsonRepresentation(BsonType.String)]
public PipelineStatus Status { get; set; }
/// <summary>
/// 选择的构建、发布项目
/// </summary>
[BsonRepresentation(BsonType.String)]
public BuildProject Project { get; set; }
/// <summary>
/// 触发人
/// </summary>
public UserInfo? TriggeredBy { get; set; }
/// <summary>
/// 版本策略
/// </summary>
[BsonRepresentation(BsonType.String)]
public PipelineVersionMode VersionMode { get; set; }
/// <summary>
/// 手动指定的版本标签
/// </summary>
public string? Tag { get; set; }
/// <summary>
/// 流水线失败或中止原因
/// </summary>
public string? Error { get; set; }
/// <summary>
/// 每个项目实际使用的版本号
/// </summary>
public List<PipelineVersion> Versions { get; set; } = [];
/// <summary>
/// 各执行步骤(按 服务器 x 项目 划分,与前端日志面板一一对应)
/// </summary>
public List<PipelineStep> Steps { get; set; } = [];
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这段代码定义了一个 C# 实体类 PipelineHistory,用于表示 CI/CD 流水线的历史运行记录。它继承自 BaseEntity(通常包含主键、创建时间等公共字段)。
该类使用了 MongoDB 的序列化特性(BsonDateTimeOptions、BsonRepresentation),说明数据存储于 MongoDB。
核心说明
Id继承自BaseEntity,同时被用作 构建运行的 runId,与 SignalR 分组一一对应,从而实现前端实时日志推送。- 记录一次“构建/发布”的完整信息:开始时间、结束时间、耗时、状态、触发人、版本、执行步骤等。
字段解释
| 字段 | 类型 | 说明 |
|---|---|---|
StartTime | DateTime | 构建/发布开始时间,使用本地时间存储 |
EndTime | DateTime | 构建/发布结束时间,使用本地时间存储 |
DurationMs | long | 总耗时,单位毫秒 |
Status | PipelineStatus | 构建/发布状态,以字符串形式存储(如成功、失败、进行中等) |
Project | BuildProject | 选择的构建/发布项目,以字符串形式存储 |
TriggeredBy | UserInfo? | 触发人信息,可为空 |
VersionMode | PipelineVersionMode | 版本策略(如手动指定、自动生成等),以字符串形式存储 |
Tag | string? | 手动指定的版本标签,可为空 |
Error | string? | 流水线失败或中止的原因 |
Versions | List<PipelineVersion> | 每个项目实际使用的版本号列表 |
Steps | List<PipelineStep> | 各执行步骤,按“服务器 × 项目”划分,与前端日志面板对应 |
特性说明
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
指定该日期时间字段以本地时间格式反序列化。[BsonRepresentation(BsonType.String)]
将枚举类型以字符串形式存储到 MongoDB,而不是整数,提高可读性。List<PipelineVersion>和List<PipelineStep>默认为空列表,避免空引用问题。
用途总结
该类是 CI/CD 流水线的“历史记录实体”,用于持久化每次构建/发布的过程数据,同时通过 Id 与 SignalR 关联,让前端能够实时查看构建日志和执行状态。
AI 正在分析代码…
评论加载中...