Skip to content

[r2cn] BUCK 文件上传后接入 Mega 显式构建触发模型 #1831

@benjamin-747

Description

@benjamin-747

[任务] BUCK 文件上传后接入 Mega 显式构建触发模型

[任务分值] 25 分

[背景描述]

随着 Mega 构建系统升级为 显式、可扩展的构建触发模型,构建不再仅由 Git pack 这一隐式事件触发,而是通过统一的 Build Trigger 进行调度。

在当前流程中

  • BUCK / BUILD 文件(如 BUCK, TARGETS, buck2 相关配置)在上传到 Mega 后,尚未与新的构建触发模型进行系统性集成

随着 Mega 已引入新的 显式、可扩展的构建触发模型(Build Trigger):

  • Git push 已被解耦为「事件 → Trigger → Build」
  • 但 cargo buckal → BUCK 上传 → CL 生成 这一特殊路径
    • 尚未纳入统一的 Trigger 体系
    • 构建是否触发、为何触发,语义不清晰
    • 难以支持 UI 可观测、手动重试、策略控制等能力

[需求描述]

一、目标

  • 将 cargo buckal 上传 BUCK 文件 这一行为,显式建模为构建触发来源
  • 统一纳入 Mega 的 Build Trigger 体系

二、核心需求

  1. 明确 cargo buckal 上传事件语义
  • Mega 在处理来自 cargo buckal 的文件上传时:
    • 将其抽象为一种 结构化的文件变更事件
  • 事件需包含:
    • 上传来源(cargo buckal)
    • 目标 repo / branch
    • 变更文件列表(BUCK / 相关配置)
  1. 接入显式 Build Trigger 创建流程
  • 在 cargo buckal 上传并生成 CL 后:
    • 显式创建 Build Trigger
    • 推荐 trigger_type 示例:
      • buck_file_upload
      • cargo_buckal_update
  • Trigger payload 至少包含:
    • CL ID
    • 变更路径
    • 关联的 commit / branch
  1. 与其他触发方式保持一致
  • cargo buckal 触发的构建应与 Git push trigger,Manual trigger,Retry trigger使用同一套构建调度与执行逻辑
  • 构建系统不感知“cargo buckal”这一特殊来源,只感知 Trigger

[代码标准]

  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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions