26dd3bb387
主要变更: 1. 动态更新功能 - 新增 Python 更新服务 (docker/update-service.py) - 添加系统更新前端页面 (frontend/src/pages/SystemUpdate.tsx) - 配置 Nginx 代理更新服务 API - 更新 Docker 启动脚本支持多进程管理 - 修复权限验证接口 (AuthController.verify) 2. Release 创建脚本 - 新增 create-release.sh 脚本支持快速创建 GitHub Release - 支持自动拼接 -beta 后缀(pre-release) - 支持无交互模式(--yes 参数) - 添加详细的使用文档 3. GitHub Actions 增强 - 添加更新包构建和上传流程 - 支持 Pre-release 检测和过滤 4. 文档完善 - 添加动态更新技术方案文档 - 添加 Docker 版本号确定流程文档 - 添加 Release 脚本使用说明
3.1 KiB
3.1 KiB
PolyHermes 动态更新功能实施完成
✅ 已完成的文件修改
1. Docker 相关
- ✅
Dockerfile- 混合编译方案(BUILD_IN_DOCKER 参数) - ✅
docker/update-service.py- Python 更新服务 - ✅
docker/start.sh- 启动脚本(启动3个进程) - ✅
docker/nginx.conf- Nginx 代理配置(/api/update/) - ✅
docker-compose.yml- 添加环境变量(ALLOW_PRERELEASE, GITHUB_REPO) - ✅
docker-compose.test.yml- 测试环境配置
2. GitHub Actions
- ✅
.github/workflows/docker-build.yml- 完整更新- Pre-release 检测
- 前后端编译
- 更新包打包和上传
- Docker 构建(BUILD_IN_DOCKER=false)
- 条件化 Telegram 通知
3. 文档
- ✅
docs/zh/DYNAMIC_UPDATE.md- 完整技术文档
📋 实施清单
| 文件 | 状态 | 说明 |
|---|---|---|
| Dockerfile | ✅ 完成 | 混合编译方案 |
| docker/update-service.py | ✅ 完成 | 更新服务(Flask) |
| docker/start.sh | ✅ 完成 | 启动3个进程 |
| docker/nginx.conf | ✅ 完成 | 代理配置 |
| docker-compose.yml | ✅ 完成 | 环境变量 |
| docker-compose.test.yml | ✅ 完成 | 测试环境 |
| .github/workflows/docker-build.yml | ✅ 完成 | CI/CD 完整流程 |
| docs/zh/DYNAMIC_UPDATE.md | ✅ 完成 | 技术文档 |
🚀 下一步
测试流程
-
本地测试
# 本地构建测试 ./deploy.sh -
Pre-release 测试
# 创建测试 tag git tag v1.3.0-beta git push origin v1.3.0-beta # GitHub 创建 Pre-release # GitHub Actions 会自动: # - 构建更新包 # - 上传到 Release # - 构建 Docker 镜像(仅 tag) # - 不发送 Telegram -
生产发布
# 创建正式 tag git tag v1.3.0 git push origin v1.3.0 # GitHub 创建正式 Release # GitHub Actions 会自动: # - 构建更新包 # - 上传到 Release # - 构建 Docker 镜像(tag + latest) # - 发送 Telegram 通知
⚠️ 注意事项
-
首次发布需要包含前端代码
- 需要先创建一个包含前端 UI 的 PR
- 实现 SystemUpdate 页面(React 组件)
- 路由、菜单等集成
-
健康检查端点
- 确保
/api/system/health端点存在 - 如果不存在,需要修改
start.sh和Dockerfile中的健康检查URL
- 确保
-
权限验证端点
- 确保
/api/auth/verify端点存在 - 或修改
update-service.py中的权限验证逻辑
- 确保
📝 待办事项
- 创建前端 SystemUpdate 页面
- 集成到系统设置菜单
- 测试本地构建流程
- 创建第一个 Pre-release 测试
- 验证更新流程
- 生产环境发布
🎯 核心特性
✅ 混合编译 - GitHub Actions 快速(8分钟),本地兼容 ✅ Pre-release 支持 - 测试环境完全隔离 ✅ Nginx 直接代理 - 无需后端 Controller ✅ 自动回滚 - 更新失败自动恢复 ✅ 进程独立 - 更新服务与主应用分离 ✅ 版本追踪 - /app/version.json 记录 ✅ 权限控制 - 管理员权限验证
实施完成时间: 2026-01-21 技术方案版本: v1.0