using Dpz.Core.EnumLibrary.Pipeline;
using Dpz.Core.Public.Entity.Pipeline;

namespace Dpz.Core.Service.Mediator.Features.Pipeline.Contracts;

/// <summary>
/// CI/CD历史记录 出参
/// </summary>
public class PipelineHistoryResponse
{
    /// <summary>
    /// ID
    /// </summary>
    public required string Id { get; set; }

    /// <summary>
    /// 构建、发布开始时间
    /// </summary>
    public DateTime StartTime { get; set; }

    /// <summary>
    /// 构建、发布结束时间
    /// </summary>
    public DateTime EndTime { get; set; }

    /// <summary>
    /// 总耗时(毫秒)
    /// </summary>
    public long DurationMs { get; set; }

    /// <summary>
    /// 构建、发布状态
    /// </summary>
    public PipelineStatus Status { get; set; }

    /// <summary>
    /// 选择的构建、发布项目
    /// </summary>
    public BuildProject Project { get; set; }

    /// <summary>
    /// 触发人
    /// </summary>
    public VmUserInfo? TriggeredBy { get; set; }

    /// <summary>
    /// 版本策略
    /// </summary>
    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# 响应模型(DTO),用于表示 CI/CD 流水线的历史记录,通常用于 API 返回给前端,或者作为服务层输出给调用方。


整体说明

  • 命名空间:Dpz.Core.Service.Mediator.Features.Pipeline.Contracts
  • 用途:承载一次流水线执行(构建/发布)的完整历史快照信息,包括时间、状态、触发人、版本信息以及各步骤的执行详情。
  • 属于典型的 “出参”(Contract / Response) 类型,常用于 Mediator 模式中查询操作的结果。

属性逐项解释

1. string Id

  • 唯一标识,代表某次流水线执行记录。
  • required 表示构造时必须有值。

2. DateTime StartTime

  • 该次构建/发布的 开始时间

3. DateTime EndTime

  • 该次构建/发布的 结束时间

4. long DurationMs

  • 总耗时(单位:毫秒)。
  • 计算方式通常就是 EndTime - StartTime,但作为数据冗余存储更利于展示。

5. PipelineStatus Status

  • 执行状态。PipelineStatus 是一个枚举,通常包含失败、成功、运行中、已中止等状态。

6. BuildProject Project

  • 选择执行的项目。BuildProject 实体类,描述要构建/发布的项目名称、类型等基本信息。

7. VmUserInfo? TriggeredBy

  • 触发人信息。VmUserInfo 是用户信息模型,可能包含用户名、头像等。
  • 可空(?),系统自动触发时可能没有具体触发人。

8. PipelineVersionMode VersionMode

  • 版本策略。枚举,例如:手动指定版本、自动生成版本、使用固定版本等。

9. string? Tag

  • 如果版本策略是手动指定,这里保存用户填写的版本标签(如 v1.2.0)。

10. string? Error

  • 流水线失败或中止时的错误原因摘要,便于定位问题。

11. List<PipelineVersion> Versions

  • 本次流水线执行中,每个项目实际使用的版本号列表
  • PipelineVersion 可能包含项目名、生成的版本号等。
  • 即使只有一个项目,也可能同时有多个相关版本(例如:应用版本 + 镜像版本)。

12. List<PipelineStep> Steps

  • 流水线的 执行步骤明细
  • 注释说明:按“服务器 × 项目”划分,与前端日志面板一一对应。
  • PipelineStep 内部可能包含服务器信息、项目信息、步骤状态、日志输出链接等,用于在前端逐行展示。

总结

这个 PipelineHistoryResponse 是一个面向展示层的完整历史记录模型。它不仅包含基础时间与状态,还通过 VersionsSteps 支持复杂的多服务器、多项目流水线场景,可以直接作为接口响应的主体或列表中的单条记录。

整个类设计非常结构化:

  • 元信息:ID、开始/结束时间、耗时、状态
  • 主体信息:项目、触发人、版本模式、标签、错误
  • 细节信息:实际版本列表、执行步骤列表

这样的设计使得前端能够在一个响应对象中拿到所有展示所需的数据,避免了多次 API 调用。

评论加载中...