Files
opsxshell/docs/release.md
T

2.6 KiB
Raw Blame History

发布指南

构建命令

# 当前平台完整安装包
npm run build:tauri

# 仅 macOS App
npx tauri build --bundles app

# macOS arm64
npm run dist:mac

# Windows x86_64(必须在 Windows 或配置完整交叉编译环境)
npm run dist:win

macOS App 位于:

src-tauri/target/release/bundle/macos/OpsXShell.app

指定 aarch64-apple-darwin target 时,产物位于对应 target 的 release/bundle 下。

临时 DMG

Tauri 调用 hdiutil 制作 DMG 时,可能在异常中断后留下:

rw.<进程号>.OpsXShell_<版本>_aarch64.dmg

这些 rw.*.dmg 是可写临时镜像,不是发布包。确认没有正在运行的 Tauri/hdiutil 打包任务后可以删除。正式包没有 rw.<数字>. 前缀。

如果 DMG 脚本报错 resource busy,先检查是否正从临时挂载目录运行 OpsXShell:

hdiutil info
lsof +D /Volumes/<临时卷名>

先正常退出该 OpsXShell 进程,再卸载对应的临时卷并重新构建。不要在应用仍从卷内运行时直接删除 rw.*.dmg。

签名和公证

标签 tauri-v* 会触发 .github/workflows/tauri-release.yml。正式标签构建要求签名变量齐全。

macOS:

  • APPLE_CERTIFICATE
  • APPLE_CERTIFICATE_PASSWORD
  • APPLE_SIGNING_IDENTITY
  • APPLE_ID
  • APPLE_PASSWORD
  • APPLE_TEAM_ID

Windows:

  • WINDOWS_CERTIFICATE_BASE64
  • WINDOWS_CERTIFICATE_PASSWORD

缺少凭据时只能生成开发构建,不能标记为正式签名或已公证版本。

产物验证

npm run release:preflight:mac
npm run release:verify:mac

npm run release:preflight:win
npm run release:verify:win

验证脚本检查架构、体积和安装包存在性。正式标签还会验证 macOS 签名/Gatekeeper 或 Windows Authenticode 签名。

安装包还必须包含 ssh:// 协议注册。macOS 检查 CFBundleURLTypes,Windows 安装后检查当前用户 Software\\Classes\\ssh 并实际执行一次协议唤起。只验证配置文件不足以证明单实例事件交付正常。

发布前检查

  1. package.json、package-lock.json、src-tauri/Cargo.toml、Cargo.lock 和 tauri.conf.json 版本一致。
  2. npm run acceptance:full 通过。
  3. 目标平台构建和签名通过。
  4. 安装后完成输入框复制/粘贴、SFTP 双向拖拽、普通区域右键菜单、SSH/SFTP/代理/跳板和 ssh:// 单实例唤起验收。
  5. 大模型新配置必须先测试后保存;AI“执行任务”必须显示当前 SSH 目标并在确认后只执行一次。
  6. 检查安装包尺寸,没有上传 rw.*.dmg、日志、测试密钥或用户数据。
  7. 保留上一稳定版本及回滚说明。