Skip to content

[r2cn] 优化 Orion Client 部署流程与 Antares 配置代码重构 #1970

@genedna

Description

@genedna

[任务] 优化 Orion Client 部署流程与 Antares 配置代码重构

[任务分值] 30 分

[背景描述]
目前项目中 Orion 已经深度集成了 Scorpio(作为 Antares 模块),不再需要启动独立的 Scorpio daemon 进程。然而,当前的部署脚本和相关代码中仍残留着大量关于独立 Scorpio 进程的管理逻辑(如 works=[] 状态文件、强杀进程等)。
同时,Orion 客户端的部署在 Terraform (Infrastructure) 和 GitHub Actions CI (Application) 之间存在职责模糊和配置冲突(两边都在尝试管理 scorpio.tomlrun.sh)。此外,Orion 代码中还存在冗余的配置路径解析逻辑和已废弃的文件(如 fs.rs)。
为了提升部署的稳定性和开发体验,我们需要对相关代码和部署脚本进行一次全面的清理与架构优化,实现“基础设施与应用配置”的职责分离。

[需求描述]
本项目包含对 mega 仓库代码及部署脚本的修改,核心需求如下:

  1. Orion 代码精简与重构

    • 简化 orion/src/antares.rs 中的配置解析逻辑:移除冗余的自动生成 scorpio.toml 逻辑。采用 Fail-fast 策略:优先读取 SCORPIO_CONFIG 环境变量 -> 回退到程序运行同级目录 -> 找不到则直接 panic!
    • 删除已废弃的模块 orion/src/fs.rs(其功能已被 Antares overlay mount 替代)。
  2. 收敛运行配置 (Runner Config)

    • orion 目录下新建 runner-config/ 目录,统一存放生产环境配置文件:.env.prodscorpio.tomlrun.sh
    • 重写 run.sh:将原来的 run.shreset.sh 合并。脚本在启动 Orion 前需自动执行环境清理(停止旧进程 buck2 killall / pkill,以及卸载并清理 FUSE 挂载点 fusermount -u),并移除旧版 Scorpio 相关的 config.toml 操作逻辑。
    • orion 根目录补充本地开发所需的 .envscorpio.toml 以及一键运行脚本 run-dev.sh,提升本地开发体验。
  3. 优化 CI/CD 部署流水线

    • 更新 .github/workflows/orion-client-deploy.yml,在 Build 阶段将 orion/runner-config/ 里的配置文件与编译出的 orion 二进制文件统一打包至 artifacts。
    • 在 Deploy 阶段,移除 SSH 内联硬编码写入 scorpio.toml 的冗余逻辑,直接使用 rsync 将整个 artifacts 目录部署到目标 VM (orion_vm 部署到 /root/orion-runner/gcp_vm 部署到 /home/orion/orion-runner/)。
  4. 梳理 Terraform 启动脚本 (Infrastructure 端协作)

    • 修改 deployment/envs/gcp/prod/scripts/startup-orion-client.sh,去除 Terraform 对配置文件 (orion-config) 的强依赖,彻底将应用配置权交接给 CI。
    • 增加容错逻辑:在设置 chmod +x 前检查文件是否存在(以兼容 Terraform 创建 VM 后、CI 尚未部署文件的空窗期);服务首次启动失败时优雅处理 (systemctl restart orion-runner || true),等待 CI 部署后再次唤醒。

[代码标准]

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

[PR 提交地址] 提交到 mega 仓库的 main 分支 orion.github/workflows 目录;(若涉及 deployment 仓库,也提相应的 PR 至其主分支)。

[开发指导]

  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