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 的序列化特性BsonDateTimeOptionsBsonRepresentation),说明数据存储于 MongoDB。


核心说明

  • Id 继承自 BaseEntity,同时被用作 构建运行的 runId,与 SignalR 分组一一对应,从而实现前端实时日志推送。
  • 记录一次“构建/发布”的完整信息:开始时间、结束时间、耗时、状态、触发人、版本、执行步骤等。

字段解释

字段类型说明
StartTimeDateTime构建/发布开始时间,使用本地时间存储
EndTimeDateTime构建/发布结束时间,使用本地时间存储
DurationMslong总耗时,单位毫秒
StatusPipelineStatus构建/发布状态,以字符串形式存储(如成功、失败、进行中等)
ProjectBuildProject选择的构建/发布项目,以字符串形式存储
TriggeredByUserInfo?触发人信息,可为空
VersionModePipelineVersionMode版本策略(如手动指定、自动生成等),以字符串形式存储
Tagstring?手动指定的版本标签,可为空
Errorstring?流水线失败或中止的原因
VersionsList<PipelineVersion>每个项目实际使用的版本号列表
StepsList<PipelineStep>各执行步骤,按“服务器 × 项目”划分,与前端日志面板对应

特性说明

  • [BsonDateTimeOptions(Kind = DateTimeKind.Local)]
    指定该日期时间字段以本地时间格式反序列化。

  • [BsonRepresentation(BsonType.String)]
    将枚举类型以字符串形式存储到 MongoDB,而不是整数,提高可读性。

  • List<PipelineVersion>List<PipelineStep> 默认为空列表,避免空引用问题。


用途总结

该类是 CI/CD 流水线的“历史记录实体”,用于持久化每次构建/发布的过程数据,同时通过 Id 与 SignalR 关联,让前端能够实时查看构建日志和执行状态。

评论加载中...