Skip to content

feat: 添加 macOS/Linux 跨平台部署与更新支持 - #2

Open
Jimmy-xuzimo wants to merge 1 commit into
Star-Moon10:mainfrom
Jimmy-xuzimo:feat/macos-support
Open

feat: 添加 macOS/Linux 跨平台部署与更新支持#2
Jimmy-xuzimo wants to merge 1 commit into
Star-Moon10:mainfrom
Jimmy-xuzimo:feat/macos-support

Conversation

@Jimmy-xuzimo

Copy link
Copy Markdown

概述

为项目增添 macOS/Linux 跨平台部署与更新支持,在不改变现有 Windows 功能的前提下补齐以下能力:

  • 部署引导:setup.shstart-system.shstop-system.sh
  • 在线更新:update-system.sh + 扩展 launch_update_runner 支持非 Windows 平台
  • 本地 AI:setup/start/stop-project-ai.sh,适配 Intel / Apple Silicon

本 PR 替代已被回退的 #1,仅修正了提交作者邮箱(改为已关联 GitHub 账号的邮箱),代码内容完全一致。

改动清单

修改

  • app/services/updates.pylaunch_update_runner 去除 Windows 硬限制,按平台选择执行器;同步更新模块 docstring

新增(7 个 .sh 脚本)

  • setup.sh / start-system.sh / stop-system.sh
  • scripts/update-system.sh
  • scripts/setup-project-ai.sh / scripts/start-project-ai.sh / scripts/stop-project-ai.sh

兼容性设计

  • Windows 原有 .bat / .ps1 逻辑原样保留,os.name == "nt" 分支不变
  • bash 脚本仅使用 nohuplsofcurlshasumunzip 等 POSIX 标准工具,无 CPU 架构相关代码
  • 更新事务 schema 与 recover-interrupted-update.py 完全兼容
  • 未修改任何数据库 schema 与业务逻辑

测试环境

操作系统 macOS(Intel x86_64)
硬件 Intel i5-8257U / 16GB RAM / 无独显
Python 3.12.12
数据库 SQLite(默认)
Ollama 0.33.0

测试用例与结果

1. 单元与集成测试

  • pytest -q92 passed

2. 发布安全审计

  • scripts/audit_public_source.py:70 文件通过
  • scripts/audit_public_source.py --runtime:62 文件通过

3. 脚本语法

  • 7 个 .sh 全部通过 bash -n 语法检查

4. 部署引导脚本

  • setup.sh:生成 .env、初始化数据库、正确识别 AI 降级 ✅
  • start-system.sh / stop-system.sh:启动 / 停止 / 重复启动去重 / PID 管理 ✅

5. 在线更新(端到端)

  • 坏包(manifest 哈希错误):校验阶段拒绝,服务不受影响 ✅
  • 好包完整更新:下载→校验→备份→替换→锁依赖→重启→健康检查 ✅
  • 中断恢复:模拟断电残留事务 + 篡改代码,启动时自动回滚恢复 ✅

6. 本地 AI

  • Ollama 启动 / 停止 / PID 管理 ✅
  • 空模型目录下降级模式正常(正确区分"未加载模型"与"服务不可用")✅

说明

本次未在 Apple Silicon(高配 Mac)上实测;改动均为纯 POSIX Shell + 纯 Python,无架构相关代码,功能行为与架构无关(Apple Silicon 下 AI 推理走 Metal,性能更优)。

- 新增 setup.sh、start-system.sh、stop-system.sh 部署引导脚本
- 新增 update-system.sh 受控更新执行器,扩展 launch_update_runner 支持非 Windows 平台
- 新增 setup/start/stop-project-ai.sh 本地 AI 运行时脚本(适配 Intel/Apple Silicon)
- 移除在线更新器仅支持 Windows 的硬限制
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