online update - yumi-furry/AstralGame-cli GitHub Wiki
服务器可从 GitHub Releases 检查最新版本并在线下载应用,替换自身二进制后自动重启服务。
Cargo.toml 使用 semver 构建号写法(如 1.4.2-4),运行时 / API 展示统一转换为下划线写法(如 1.4.2_4);解析时两种写法等价。版本解析支持 1.4.2、1.4.2_1、1.4.2-1、v1.4.2、V1.4.2_1 等格式。
GET /api/update/check 请求 GitHub Releases API(匿名限流 60 次/小时/IP),返回:
| 字段 | 说明 |
|---|---|
current_version |
当前版本 |
latest_version |
最新发行版 tag |
latest_name |
release 标题 |
update_available |
是否存在更新(语义版本比较) |
release_notes |
release 说明正文(Markdown) |
release_url |
release 网页地址 |
download_url |
linux x86_64 资产直链(无匹配资产时为 null) |
网络 / 解析失败时不抛 500,返回 current_version 与 error,前端仍可展示当前版本。
POST /api/update/apply,请求体 download_url(GitHub 发行版资产直链)。
安全白名单:只允许从以下域名下载,防止服务端被灌入任意二进制:
https://github.com/https://objects.githubusercontent.com/https://release-assets.githubusercontent.com/
- 下载新二进制到
<exe>.new(300 秒超时); -
chmod 755赋予执行权限; - 旧文件改名
<exe>.bak(Linux 允许重命名正在运行的可执行文件); -
.new原子rename为当前路径; -
sleep 1 && systemctl restart astral-server(nohup脱离父进程执行,确保 HTTP 响应已发出)。
Windows 等非 Unix 平台暂不支持自动重启。