Skip to content

Latest commit

 

History

History
95 lines (69 loc) · 3.01 KB

File metadata and controls

95 lines (69 loc) · 3.01 KB

Release Engineering

本文档记录桌面版发布流程。Windows x64 使用 electron-builder 的 NSIS target;macOS 使用 dmg target。

本地发布

  1. 准备依赖:

    bun install
  2. 准备 release payload。仓库根目录必须存在:

    runtime/python/python.exe 或 runtime/python/bin/python3
    runtime/python/DLLs/ 或 runtime/python/lib/
    runtime/python/Lib/ 或 runtime/python/lib/python3.12/
    runtime/python/Scripts/pip.exe 或 runtime/python/bin/pip
    runtime/git/bin/git.exe
    runtime/opencode/opencode.exe
    resources/opencode/plugin_code.md
    modules/MaiBot/bot.py
    modules/MaiBot/plugins/napcat-adapter/
    modules/MaiBot/plugins/snowluma-adapter/
    modules/napcat/NapCatWinBootMain.exe 或 modules/napcat/napcat-macos-launch.sh
    modules/SnowLuma/index.mjs
    

    runtime/python 必须保持为便携 Python,只保留 Python 自身、pip/setuptools/wheel 以及启动依赖解析需要的 packaging。不要把 MaiBot、dashboard 或其它应用依赖预装进 runtime/python/Lib/site-packagesruntime/python/lib/python3.12/site-packages;首次启动会复制可写 python-env 并把运行依赖安装到其中。

    resources/opencode/plugin_code.md 会在打包时复制到安装包资源目录的 runtime/opencode/plugin_code.md,用于编写器内置 OpenCode 的默认插件编写说明。

  3. 执行发布检查:

    bun run release:check
  4. 构建 Windows x64 安装包:

    bun run release:win

安装包会输出到 release/

release/MaiBot OK-<version>-win.exe
release/MaiBot OK-<version>-win.exe.blockmap
release/latest-win.yml

GitHub Actions 发布

Windows Release 工作流是手动触发的。推荐上传一个 payload zip 到稳定位置,然后在工作流输入里填写:

  • payload_url:zip 下载地址。
  • payload_sha256:可选,填了会校验 zip 完整性。
  • create_github_release:是否创建 draft GitHub Release。
  • tag_name:创建 GitHub Release 时必填,例如 v0.1.0
  • prerelease:是否标记为预发布。

payload zip 支持两种结构:

payload.zip
  runtime/
  modules/

或:

payload.zip
  MaiBotOneKeyPayload/
    runtime/
    modules/

保留的数据

安装器卸载时不会删除 Electron userData。应用 userData 按安装目录 hash 隔离,所以同一台机器复制两份安装目录时,可以分别运行两套实例与数据。

模块代码更新策略另行实现:后续强制覆盖模块代码时,需要保留配置和数据,并要求用户二次确认。

Windows 实机冒烟清单

  • 安装器可正常安装到默认目录和自定义目录。
  • 同一安装目录重复启动只保留一个实例。
  • 复制两份安装目录后可以分别启动。
  • MaiBot Core 和 NapCat 能被 Electron 启停。
  • 端口冲突时明确报错,不复用外部进程。
  • 关闭窗口时能选择最小化或全部退出。
  • 强杀服务后再次启动不会残留 PTY session。