Skip to content

feat: 合并 v2.0.0 系统动态更新功能到 main 分支#24

Merged
WrBug merged 14 commits intomainfrom
dynamic_load
Jan 21, 2026
Merged

feat: 合并 v2.0.0 系统动态更新功能到 main 分支#24
WrBug merged 14 commits intomainfrom
dynamic_load

Conversation

@WrBug
Copy link
Copy Markdown
Owner

@WrBug WrBug commented Jan 21, 2026

PolyHermes v2.0.0 发布公告

🎉 重大版本更新!PolyHermes v2.0.0 现已发布!


📋 更新摘要

PolyHermes v2.0.0 是一个重要版本更新,带来了系统动态更新功能,让您无需重启 Docker 容器即可完成系统更新。同时优化了用户体验和多项技术改进。


✨ 核心新功能

🔄 系统动态更新(重磅功能)

无需重启 Docker 容器即可更新系统,大幅提升部署和维护效率!

主要特性

  • 在线更新:在 Web UI 中一键检查并应用更新,无需手动操作
  • 零停机更新:更新过程约 30-60 秒,系统自动处理
  • 自动回滚:更新失败时自动恢复到旧版本,确保系统稳定性
  • 版本管理:清晰显示当前版本和可用更新,支持 Pre-release 版本检测
  • 更新内容展示:支持 Markdown 格式的更新说明,美观易读

技术实现

  • 独立的 Python Flask 更新服务(端口 9090),与主应用隔离
  • 单一更新包(tar.gz),包含前后端完整更新
  • 自动备份和版本管理
  • 管理员权限验证,确保安全性

📦 Release 管理工具

新增自动化发布脚本,简化版本发布流程:

  • 自动创建 Git 标签
  • 发布 GitHub Release
  • 支持 Pre-release 标记
  • 自动拼接版本号后缀(Pre-release 自动添加 -beta
  • 支持非交互模式,便于 CI/CD 集成

🎨 版本号显示优化

  • Tag 格式显示:版本号使用 Git Tag 格式(如 v2.0.0-beta
  • 智能颜色提示
    • 🟡 黄色 Tag:有新版本可用(点击可跳转到系统更新页面)
    • 🟢 绿色 Tag:当前已是最新版本
  • 镂空样式:更小巧美观的版本号标签
  • 自动检查:系统自动检查更新,有新版本时在导航栏显示提示

🎨 UI/UX 优化

系统更新页面

  • 美化界面:全新的渐变背景、卡片样式和图标设计
  • Markdown 支持:更新内容支持完整的 Markdown 渲染(标题、列表、代码块、表格等)
  • 进度显示:美观的进度条和状态提示
  • 优化布局:系统更新模块移至系统设置页面最上方,更易访问

版本号显示

  • 使用镂空 Tag 样式,字号 8px
  • 与标题垂直居中对齐
  • 响应式设计,完美支持移动端和桌面端

📝 完整更新日志

新增功能

  • 系统动态更新功能(无需重启容器)
  • 自动备份和回滚机制
  • 版本管理和检测(支持 Pre-release)
  • Markdown 格式的更新内容展示
  • 自动化 Release 创建脚本
  • 版本号智能显示(带颜色提示)

优化

  • 系统更新模块移至系统设置页面最上方
  • 版本号使用 Tag 格式显示
  • 健康检查等待时间增加到 90 秒
  • 后端启动日志输出到文件,便于问题诊断
  • 改进错误诊断信息

修复

  • 修复 Docker 构建时找不到前端产物的问题
  • 修复前端构建时版本号未正确传递的问题
  • 修复 GitHub Actions 构建错误(Gradle Wrapper)
  • 修复 TypeScript 编译错误
  • 修复系统更新 API 路由错误(/update/execute/update/update

📊 版本信息

  • 版本号: v2.0.0
  • 发布日期: 2026-01-21
  • 变更统计: +5251 行,-163 行
  • 新增文件: 17 个
  • 修改文件: 13 个

🔄 如何升级

方式一:使用动态更新功能(推荐)

  1. 登录系统,进入 系统设置系统更新
  2. 点击 检查更新
  3. 如果有新版本,点击 立即升级
  4. 等待更新完成(约 30-60 秒)
  5. 页面会自动刷新,更新完成

方式二:重新部署 Docker 容器

# 1. 停止当前容器
docker-compose -f docker-compose.prod.yml down

# 2. 拉取新版本镜像
docker pull wrbug/polyhermes:v2.0.0

# 3. 更新 docker-compose.prod.yml 中的镜像标签
# image: wrbug/polyhermes:v2.0.0

# 4. 重新启动
docker-compose -f docker-compose.prod.yml up -d

升级注意事项

  • ⚠️ 数据备份:虽然更新不会删除数据,但建议在更新前备份数据库
  • ⚠️ 权限要求:执行动态更新需要管理员权限
  • 向后兼容:v2.0.0 完全兼容 v1.1.16 的数据结构和配置

📚 技术文档


🙏 致谢

感谢所有使用 PolyHermes 的用户和贡献者!您的反馈和支持是我们不断改进的动力。


📥 问题反馈

如果您在使用过程中遇到任何问题,请通过以下方式反馈:


📥 下载地址

  • Docker Hub: wrbug/polyhermes:v2.0.0
  • GitHub Release: v2.0.0

© 2024 PolyHermes. 采用 MIT 许可证开源。

⚠️ 免责声明:本软件仅供学习和研究使用。使用本软件进行交易的风险由用户自行承担。

WrBug added 14 commits January 21, 2026 03:34
主要变更:

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 脚本使用说明
- 将 gradle 命令改为 ./gradlew
- 确保 gradlew 有执行权限
- 修复 Pre-release v2.0.0-beta 构建失败问题
- 修复 .gitignore 中错误忽略 gradle-wrapper.jar
- Gradle Wrapper 的 JAR 文件应该被提交到仓库
- 修复 GitHub Actions 构建时找不到 Wrapper 的问题
- gradle-wrapper.jar 是 Gradle Wrapper 必需的文件
- 必须提交到仓库才能在其他环境中使用
- 修复 GitHub Actions 构建错误
- 确保 gradle-wrapper.jar 不被 *.jar 规则忽略
- Gradle Wrapper 的 JAR 文件必须提交到仓库
- 导出 apiClient 供 SystemUpdate 组件使用
- 删除 SystemSettings 中未使用的系统更新相关代码
- 系统更新功能已独立到 SystemUpdate 组件
- 在构建阶段先从构建上下文复制外部产物
- 如果 BUILD_IN_DOCKER=true,编译会覆盖外部产物
- 如果 BUILD_IN_DOCKER=false,使用已复制的外部产物
- 从 .dockerignore 移除 frontend/dist 和 backend/build,使外部构建产物可被 Docker 使用
- 在 GitHub Actions 中添加构建上下文准备步骤,验证产物存在
- 更新 Dockerfile 注释,说明构建产物在不同场景下的使用
- 在 GitHub Actions 前端构建步骤中添加 VERSION、GIT_TAG 环境变量
- 确保版本号能正确注入到前端构建产物中
- 系统更新模块移到系统设置页面最上方
- 版本号显示使用 Tag 格式(gitTag)
- 版本号 Tag 根据是否有新版本显示不同颜色(黄色=有新版本,绿色=无新版本)
- 版本号使用镂空样式,字号 8px
- 支持 Markdown 渲染更新内容
- 美化系统更新页面样式
- 在 Layout 中添加版本更新检查,有新版本时显示提示
- 移除未使用的 getGitHubTagUrl 导入
- 移除未使用的 Divider、InfoCircleOutlined 导入
- 移除未使用的 Typography 组件解构
- 增加等待时间从30秒到90秒
- 后端日志输出到文件,便于诊断问题
- 每5秒检查一次后端进程状态
- 改进错误诊断信息,区分进程退出和健康检查失败
- 记录后端启动日志的最后100行用于问题排查
- 修复 /api/update/execute 404 错误,改为 /api/update/update
- 增加健康检查等待时间从30秒到90秒
- 后端日志输出到文件,便于诊断问题
- 每5秒检查一次后端进程状态
- 改进错误诊断信息,区分进程退出和健康检查失败
- 记录后端启动日志的最后100行用于问题排查
@WrBug WrBug merged commit 9c55177 into main Jan 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant