113 lines
3.1 KiB
Markdown
113 lines
3.1 KiB
Markdown
|
|
# 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. **本地测试**
|
|||
|
|
```bash
|
|||
|
|
# 本地构建测试
|
|||
|
|
./deploy.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **Pre-release 测试**
|
|||
|
|
```bash
|
|||
|
|
# 创建测试 tag
|
|||
|
|
git tag v1.3.0-beta
|
|||
|
|
git push origin v1.3.0-beta
|
|||
|
|
|
|||
|
|
# GitHub 创建 Pre-release
|
|||
|
|
# GitHub Actions 会自动:
|
|||
|
|
# - 构建更新包
|
|||
|
|
# - 上传到 Release
|
|||
|
|
# - 构建 Docker 镜像(仅 tag)
|
|||
|
|
# - 不发送 Telegram
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **生产发布**
|
|||
|
|
```bash
|
|||
|
|
# 创建正式 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.sh` 和 `Dockerfile` 中的健康检查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
|