Skip to content

[r2cn] Buckal 工具上传Buck文件集成 #1605

@benjamin-747

Description

@benjamin-747

[任务] Buckal 工具上传Buck文件集成

[任务分值] 60 分

[背景描述]

目前 Mega 系统 已经支持通过 UI 或内部流程创建 CL(Change List)并进行代码文件变更与构建:

当前需要实现一组面向 Buckal CLI 工具 的 专用 API 接口,使其能够:

  • 创建 CL
  • 上传关联文件(BUCK 文件及依赖)
  • 通知 Mega 上传完成
  • 自动将 CL 状态从 Draft 改为 Open,并触发构建流程

[需求描述]

  1. CLI 新建 CL

  2. CLI 上传 BUCK 文件

  • 支持单文件或目录上传。
  • 使用 multipart/form-data 格式上传。
  • 调用 Mega API:POST /api/cl/:id/files
  • 后端接收后保存文件快照(例如存入临时区)。
  1. 通知 Mega 文件上传完成
  • CLI 上传完所有文件后调用:
  • POST /api/cl/:id/notify_upload_complete
  • Mega 根据上传的文件路径及修改内容:
  • 生成新的 tree 和 commit;
  • 将 CL 从 Draft 状态改为 Open;
  • 触发后续构建任务(通过构建队列)。

4.后端自动生成 Commit

  • 后端根据 CL 的文件快照生成 Git tree;
  • 自动创建一个新 commit;
  • 写入 refs;
  • 关联到 CL。
  1. API 参考
步骤 CLI 操作 Mega 系统行为 API 说明
CLI 创建 CL 用户执行 buckal push Mega 创建一个 Draft 状态的 CL POST /api/cl/create
上传文件 CLI 逐个上传 BUCK 文件与资源 Mega 接收文件并写入临时存储或 blob 仓库,生成对应 commit POST /api/cl/:id/upload
上传完成 CLI 调用完成通知 API Mega 将 CL 状态从 Draft → Open,触发构建 POST /api/cl/:id/complete

[代码标准]

  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 [email protected]
  2. Tianxing Ye [email protected]

[备注]

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

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions