Skip to content

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

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 开源实习计划 - 学生注册与审核

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions