Files
PolyHermes/docs/zh/IMPLEMENTATION_SUMMARY.md
WrBug 26dd3bb387 feat: 实现系统动态更新功能和 Release 创建脚本
主要变更:

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 脚本使用说明
2026-01-21 03:34:16 +08:00

3.1 KiB
Raw Permalink Blame History

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 完成 技术文档

🚀 下一步

测试流程

  1. 本地测试

    # 本地构建测试
    ./deploy.sh
    
  2. 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
    
  3. 生产发布

    # 创建正式 tag
    git tag v1.3.0
    git push origin v1.3.0
    
    # GitHub 创建正式 Release
    # GitHub Actions 会自动:
    # - 构建更新包
    # - 上传到 Release
    # - 构建 Docker 镜像(tag + latest
    # - 发送 Telegram 通知
    

⚠️ 注意事项

  1. 首次发布需要包含前端代码

    • 需要先创建一个包含前端 UI 的 PR
    • 实现 SystemUpdate 页面(React 组件)
    • 路由、菜单等集成
  2. 健康检查端点

    • 确保 /api/system/health 端点存在
    • 如果不存在,需要修改 start.shDockerfile 中的健康检查URL
  3. 权限验证端点

    • 确保 /api/auth/verify 端点存在
    • 或修改 update-service.py 中的权限验证逻辑

📝 待办事项

  • 创建前端 SystemUpdate 页面
  • 集成到系统设置菜单
  • 测试本地构建流程
  • 创建第一个 Pre-release 测试
  • 验证更新流程
  • 生产环境发布

🎯 核心特性

混合编译 - GitHub Actions 快速(8分钟),本地兼容 Pre-release 支持 - 测试环境完全隔离 Nginx 直接代理 - 无需后端 Controller 自动回滚 - 更新失败自动恢复 进程独立 - 更新服务与主应用分离 版本追踪 - /app/version.json 记录 权限控制 - 管理员权限验证


实施完成时间: 2026-01-21 技术方案版本: v1.0