Skip to content

[r2cn] 实现 Orion Target 级构建状态上报与查询能力 #1883

@benjamin-747

Description

@benjamin-747

[任务] 实现 Orion Target 级构建状态上报与查询能力

[任务分值] 30 分

[背景描述]

目前 Orion 的构建流程中:

  • Orion client 负责实际执行构建任务(如 Buck2 targets)
  • Orion server 负责:
    • 构建任务调度
    • 日志聚合与分发
    • 向前端提供构建整体状态

但现阶段存在一个明显缺口:

  • 构建状态主要停留在 整体 / 任务级别
  • 缺乏 Target 级别(per-target) 的执行状态
  • 前端无法精确展示:
    • 哪个 target 正在执行
    • 哪些 target 已完成 / 失败 / 跳过
    • 构建卡在哪个具体 target

因此,需要在 Orion client 中计算每个 target 的构建状态,并上报给 Orion server,由 server 统一对前端提供查询接口。

[需求描述]

一、目标
• 实现 Target 级别的构建状态采集、上报与存储
• Orion server 向前端提供 Target 执行状态查询接口
• 为日志、缓存、重复构建等能力提供基础数据

二、功能需求

  1. Orion Client:Target 状态计算
  • 在构建执行过程中:

    • 识别构建中涉及的 targets
    • 跟踪每个 target 的执行状态
  • 至少支持以下状态:

    • pending:等待执行
    • running:正在执行
    • succeeded:成功完成
    • failed:执行失败
    • skipped(可选):被缓存或未执行
  • 状态更新应:

    • 尽量贴近真实执行时间
    • 避免过于频繁的上报
  1. Orion Client → Orion Server 状态上报
  • 定义 Target 状态上报协议 / API:
    • 支持批量上报
    • 支持增量更新
  • 每次上报至少包含:
    • 构建 ID / CL ID
    • Target 标识(如 label)
    • 当前状态
    • 可选:开始 / 结束时间、错误信息
  1. Orion Server:状态接收与存储
  • 接收来自 Orion client 的 Target 状态更新
  • 按构建 / CL 维度聚合 Target 状态
  • 保证:
    • 状态更新的幂等性
    • 支持并发上报
  1. Orion Server → 前端 查询接口
  • 提供 API 供前端查询:
    • 某次构建下所有 Target 的状态列表
    • 单个 Target 的当前状态

[代码标准]

  1. 所有 PR 提交必须签署 Signed-off-by 和 使用 GPG 签名,即提交代码时(使用 git commit 命令时)至少使用 -s -S 两个参数,参考 Contributing Guide
  2. 所有 PR 提交必须通过 GitHub Actions 自动化测试,提交 PR 后请关注 GitHub Actions 结果;
  3. 代码注释均需要使用英文;

[PR 提交地址] 提交到 mega 仓库的 main 分支 `` 目录;

[开发指导]

  1. 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;

[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。

  1. Quanyi Ma genedna@gmail.com
  2. Tianxing Ye yetianxing2014@gmail.com

[备注]

  1. 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务r2cn 开源实习计划 - 学生注册与审核

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions