Aeria
GitHub
改 · 3.28

发一个版本

最后核对 2026-10-07对应提交 5999c2b依据 build_runtime.py · audit_artifact.py · cli.py · providers.py · service.py

一次发布是:检查、编运行时、打安装包、查发出去的文件、写一份签名的发布清单、放上 GitHub Releases。清单一出现,装着的人就会收到更新提示;装的时候先备份,失败就退回原来的版本。

本页 7 节
  1. 发之前
  2. 编运行时、打安装包
  3. 查发出去的文件
  4. 写清单、签名、发出去
  5. 装着的人那边
  6. 对应的代码
  7. 没做到的

发之前

编运行时、打安装包

.venv/bin/python scripts/build_runtime.py --channel stable \
  --update-source-json '{"type": "github", "repository": "<组织>/<仓库>"}'

运行时用 Nuitka 编成本机程序,发出去的包里没有 .py 源码。编完自己审计一遍:不能有源码、.env 和密钥文件、密钥形状的字符串、数据库、日志、私人数据目录。

然后把编好的运行时(build/runtime/<平台>/)整个放进 desktop/src-tauri/resources/runtime/,打安装包:

cd desktop
npx tauri build --bundles app,dmg

有苹果开发者证书的,签名、公证的步骤在仓库的 docs/DESKTOP_APP.md;没有的话包也能用,只是 macOS 会提示「无法验证开发者」。

查发出去的文件

python3 scripts/audit_artifact.py dist/*.tar.gz desktop/src-tauri/target/release/bundle desktop/dist

每个文件整个扫,包里套的包、.dmg 都打开查;任何一项命中就失败。正式发布前还要在一个干净的目录里,从 git archive 出来的源码重新编一遍,不让本机上没提交的文件、构建机的路径和时区混进安装包。

写清单、签名、发出去

aeria-release manifest --channel stable --version <版本> --build-id <编号> --sequence <上次 + 1> \
  --minimum-safe <最低安全版本> --changelog-file <这一节> \
  --package "macos-arm64=<下载地址>@<本地文件>" --out dist/manifest-stable.payload.json
aeria-release sign --key <私钥> --in dist/manifest-stable.payload.json --out dist/manifest-stable.json
aeria-release verify --in dist/manifest-stable.json --channel stable

在 GitHub 上建一个 Release,先传各平台的包和安装包,最后传 manifest-stable.json:清单一出现,客户端就会去下它指着的包。

装着的人那边

对应的代码

没做到的