Skip to content

发布流程 ​

本页是真实可执行的 SOP:每个产品从哪里构建、构建产物长什么样、怎么投递到本站、 怎么上线、什么时候需要迁 COS。

在动手前先看 安全红线,发布任何产物前都过一遍。

总览 ​

源项目构建产物 ──► docs/public/releases/<file> ──► catalog.js 回填元数据 ──► npm run build ──► 上线
                                       ▲
                                       │  推荐用 `node scripts/publish-release.mjs <file>`
                                       │  它会算 SHA-256、复制文件、删除 .pending 占位

安全红线 ​

  1. 不要把 KiberCloud 的 release.tgz 直接搬上来。它打包时把 release/.env(含 COS_SECRET_ID、COS_SECRET_KEY、JWT_SECRET、DB_PASSWORD、ADMIN_PASSWORD 等真实值)一起打进去了。
    • 在 kibercloud/scripts/deploy.sh 打包后先清掉 release/.env(保留 release/.env.example),再 tar czf kibercloud-beta-linux-amd64.tar.gz -C kibercloud release --exclude='release/.env'
    • 或者改 deploy.sh 让它从一开始就不打 release/.env
  2. 不要在制品包里出现 *.keystore、*.jks。Android 签名密钥一旦随包分发就视为泄漏。
  3. 不要把 macOS .app 里的私有 .git/ 或 .cargo/ 带上来。packaging/macos/package.sh 已经会过滤,但人工复制时请注意。
  4. 任何时候不确定,就先打开产物目录 ls -la 看看有没有不该出现的文件。

KiberCloud ​

构建 ​

bash
cd /path/to/kibercloud
./scripts/deploy.sh build        # 产出 release/(含 Go 二进制、前端、systemd、nginx)
rm -f release/.env               # ← 必做:删真实 .env
cp .env.example release/.env.example
tar -czf /tmp/kibercloud-beta-linux-amd64.tar.gz -C . release --exclude='release/.env'

投递 ​

bash
cd /path/to/kiberapp
node scripts/publish-release.mjs /tmp/kibercloud-beta-linux-amd64.tar.gz
# 把脚本打印的 sizeBytes / sha256 填到 docs/data/catalog.js
npm run build

发布后该改哪些字段 ​

  • catalog.js 里 KiberCloud 的 version 与每条 artifact 的 version / updatedAt
  • docs/kibercloud/index.md 里的「当前阶段」(如果从 Beta 升级到正式版)
  • 三款产品的版本号必须保持一致节奏 —— 一次发版同时改三处

KiberShot ​

构建 ​

bash
cd /path/to/kibershot
export JAVA_HOME=$(/usr/libexec/java_home -v 21)
./gradlew assembleDebug
# 产物:app/build/outputs/apk/debug/app-debug.apk
cp app/build/outputs/apk/debug/app-debug.apk /tmp/kibershot-0.6.0-android-universal.apk

当前 KiberShot 仅产出 Debug APK,没有 Release 签名版。Debug APK 不带签名密钥风险, 但仍要在「安全红线」一节核对:APK 内嵌的 META-INF 不能有你的发布 keystore。

投递 ​

bash
node scripts/publish-release.mjs /tmp/kibershot-0.6.0-android-universal.apk
# 回填 sizeBytes / sha256

Kibermod Studio ​

构建 ​

bash
cd /path/to/kiberstudio

# macOS(产物:target/release/dist/)
bash packaging/macos/package.sh

# Windows(在 Windows 机器上)
powershell -File packaging/windows/package.ps1

# Linux
bash packaging/linux/package.sh
bash packaging/linux/flatpak-bundle.sh   # 可选

# FreeBSD
bash packaging/freebsd/package.sh

# Web (WASM)
bash packaging/web/package.sh

packaging/macos/package.sh 当前默认会把 .app 一起打进 .dmg 并(如果配置了)做签名与公证。 我们的 catalog.js 里给 macOS dmg 留的 note 是「Apple silicon 与 Intel 通用,要求 macOS 11.0 及以上」, 真实签名后可以在 note 后追加一行 已 Apple 开发者签名与公证,由 catalog.js 驱动而非写死。

投递 ​

bash
# 一个一个来;体积都不小,注意 repo 体积
node scripts/publish-release.mjs target/release/dist/kibermod-0.7.0-macos-universal.dmg
node scripts/publish-release.mjs target/release/dist/kibermod-cli-0.7.0-macos-universal.zip
node scripts/publish-release.mjs target/release/dist/kibermod-0.7.0-windows-x64.msi
node scripts/publish-release.mjs target/release/dist/kibermod-0.7.0-windows-x64-portable.zip
node scripts/publish-release.mjs target/release/dist/kibermod-0.7.0-linux-x86_64.AppImage
node scripts/publish-release.mjs target/release/dist/kibermod-0.7.0-linux-x86_64.deb
node scripts/publish-release.mjs target/release/dist/kibermod-web-0.7.0.zip

验证 ​

bash
# 1. 校验 catalog 完整性
npm run check:releases        # 应该有 0 缺失、0 孤儿
npm run check:releases -- --strict

# 2. 重新构建
npm run build

# 3. 抽检
ls -la docs/.vitepress/dist/releases/
# 用浏览器打开 dist/releases/<filename> 应该能下载

何时迁到对象存储 ​

仓库里 docs/public/releases/ 适合:

  • 总产物体积 < 100 MB
  • 更新频率 < 每周一次
  • 团队成员少,所有访问者都习惯 git 流程

不满足以上任一时,迁到腾讯云 COS(桶 cloud-1302494519):

  1. 在 COS 里建 releases/<产品>/ 目录,把产物上传。
  2. 把 catalog.js 里的 url 字段从 /releases/<file> 改为 https://cloud-1302494519.cos.ap-shanghai.myqcloud.com/releases/<产品>/<file>。
  3. 在 deploy/nginx.conf 里去掉 location /releases/ 段。
  4. 在 COS 控制台配置 CORS(允许 app.kibermod.com)。

一个完整的发版日流程 ​

bash
# 1. 三款产品各自构建 → 产出 N 个文件
# 2. 把所有文件集中到一个目录
mkdir -p /tmp/release-batch && cp <所有产物> /tmp/release-batch/

# 3. 逐个投递
for f in /tmp/release-batch/*; do
  node scripts/publish-release.mjs "$f"
done

# 4. 把脚本打印的 sizeBytes / sha256 集中回填到 catalog.js
# 5. 跑校验
npm run check:releases
npm run build

# 6. 提交(不要 git add 二进制文件;如需保留,用 git add -f)
git add docs/data/catalog.js docs/public/releases/.pending  # 等
git commit -m "release: 2026-10-19 三款产品同步发版"

Kibermod 系列软件官方下载站 · 自托管与本地优先