[r2cn] Buckal 工具上传 Buck 文件集成
[任务] Buckal 工具上传Buck文件集成
[任务分值] 60 分
[背景描述]
目前 Mega 系统 已经支持通过 UI 或内部流程创建 CL(Change List)并进行代码文件变更与构建:
当前需要实现一组面向 Buckal CLI 工具 的 专用 API 接口,使其能够:
- 创建 CL
- 上传关联文件(BUCK 文件及依赖)
- 通知 Mega 上传完成
- 自动将 CL 状态从 Draft 改为 Open,并触发构建流程
[需求描述]
-
CLI 新建 CL
-
CLI 上传 BUCK 文件
- 支持单文件或目录上传。
- 使用 multipart/form-data 格式上传。
- 调用 Mega API:POST /api/cl/:id/files
- 后端接收后保存文件快照(例如存入临时区)。
- 通知 Mega 文件上传完成
- CLI 上传完所有文件后调用:
- POST /api/cl/:id/notify_upload_complete
- Mega 根据上传的文件路径及修改内容:
- 生成新的 tree 和 commit;
- 将 CL 从 Draft 状态改为 Open;
- 触发后续构建任务(通过构建队列)。
4.后端自动生成 Commit
- 后端根据 CL 的文件快照生成 Git tree;
- 自动创建一个新 commit;
- 写入 refs;
- 关联到 CL。
- 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 |
[代码标准]
- 所有 PR 提交必须签署
Signed-off-by和 使用GPG签名,即提交代码时(使用git commit命令时)至少使用-s -S两个参数,参考 Contributing Guide; - 所有 PR 提交必须通过
GitHub Actions自动化测试,提交 PR 后请关注GitHub Actions结果; - 代码注释均需要使用英文;
[PR 提交地址] 提交到 mega 仓库的 main 分支 `` 目录;
[开发指导]
- 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;
[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-meta 频道和导师交流。
- Quanyi Ma [email protected]
- Tianxing Ye [email protected]
[备注]
- 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务 和 r2cn 开源实习计划 - 学生注册与审核
任务创建成功。
任务更新成功,当前分值为: 60
/request-assign
认领成功:等待导师审核,请及时联系导师进行审核。
/intern-approve
操作失败:您当前没有权限修改该任务。
/intern-approve
认领审核成功:已将该任务分配给学生。