|
15 | 15 |
|
16 | 16 | ```text |
17 | 17 | publish-stable.mjs / publish-channel.mjs ← 唯一发版入口 |
18 | | - ├─ npm(pnpm publish) |
19 | | - └─ binary(lib/binary-release |
20 | | - → binary-build |
21 | | - → gh-release |
22 | | - → oss-direct-upload → FC release 通道) |
| 18 | + ├─ binary 先走(lib/binary-release |
| 19 | + │ → binary-build → gh-release |
| 20 | + │ → oss-direct-upload → FC release 通道) |
| 21 | + └─ OSS 成功后再 npm(pnpm publish) |
23 | 22 | ``` |
24 | 23 |
|
| 24 | +bailian-cli 的二进制(GitHub Release + OSS)在 npm 之前。OSS 上传受网络波动可能失败;若 npm 先成功,会出现 latest 已发出但 CDN 没有对应二进制。stable 仍要先推 `v<version>` tag,因为 GitHub Release 首次创建带 `--verify-tag`。`knowledge-studio-cli` / `--skip-binary` 没有二进制,仍只发 npm。 |
| 25 | + |
25 | 26 | `tools/release/lib/binary-release.mjs` 等是实现,一般不要单独当发版入口(调试可用)。 |
26 | 27 |
|
27 | 28 | ### OSS 通道:FC 预签名上传(仓库不持有任何 OSS 凭据) |
@@ -73,15 +74,15 @@ workflow 的 `channel` 输入**只决定 npm dist-tag**(如 `mcp` / `plugin` / |
73 | 74 | 1. 在 GitHub 触发 Publish workflow,mode 选 `channel`,channel 填 npm dist-tag 名: |
74 | 75 | - **`bailian-cli`**:npm 发到该 tag;二进制同时刷新 CDN `sync-release.json`(与 tag 名无关)。本机验证:`BAILIAN_CHANNEL=sync-release`。**先发二进制(zip+tar.gz 上齐)再发静态仓 `install.sh`**,避免新脚本去拉还不存在的 `.tar.gz`。 |
75 | 76 | - **`knowledge-studio-cli`**:仅 npm(自动跳过 binary,不碰 `sync-release.json`) |
76 | | -2. CI 自动:生成 `0.0.0-beta-<sha7>-<YYYYMMDDHHMM>`(UTC 到分钟;同 commit 同分钟重跑会覆盖同号)→ 临时 bump → 自检 → **npm 发到 dist-tag** →(bailian-cli)**Bun 编二进制 + GH prerelease + 覆盖 `sync-release.json`** → 还原 package.json |
| 77 | +2. CI 自动:生成 `0.0.0-beta-<sha7>-<YYYYMMDDHHMM>`(UTC 到分钟;同 commit 同分钟重跑会覆盖同号)→ 临时 bump → 自检 →(bailian-cli)**Bun 编二进制 + GH prerelease + 覆盖 `sync-release.json`** → **npm 发到 dist-tag** → 还原 package.json |
77 | 78 | 3. 对应脚本:`tools/release/publish-channel.mjs` |
78 | 79 |
|
79 | 80 | ### stable 发布 |
80 | 81 |
|
81 | 82 | 1. 确保当前 release tooling 覆盖的包(`tools/release/lib/packages.mjs`)已升到目标版本且一致;当前基础集合为 `packages/core` / `packages/runtime` / `packages/commands` / `packages/cli`,`knowledge-studio-cli` 发布会额外包含 `packages/kscli` |
82 | 83 | 2. 在 GitHub 触发 Publish workflow,package 选目标包集合,mode 选 `stable` |
83 | 84 | 3. 需要 production environment 审批人批准 |
84 | | -4. CI 自动:自检 → **npm 发到 latest** → **推送 git tag `v<ver>`** → **Bun 编二进制并创建/更新 GitHub Release**(每平台 `.zip`,darwin/linux 额外 `.tar.gz`)→(bailian-cli)维护 CDN **`manifest.json`**(unix 资产含 `tar` / `tarSha256`,`file` 仍为 zip)→ 完成 |
| 85 | +4. CI 自动:自检 → **推送 git tag `v<ver>`** → **Bun 编二进制并创建/更新 GitHub Release**(每平台 `.zip`,darwin/linux 额外 `.tar.gz`)→(bailian-cli)维护 CDN **`manifest.json`**(unix 资产含 `tar` / `tarSha256`,`file` 仍为 zip)→ **npm 发到 latest** → 完成 |
85 | 86 | 5. 如果所选发布集合的当前版本已全部存在于 npm,stable 发布会失败并提示先升级版本号;如果只有部分包已发布,CI 会继续补发缺失包 |
86 | 87 | 6. 对应脚本:`tools/release/publish-stable.mjs` |
87 | 88 |
|
@@ -160,4 +161,5 @@ node tools/release/publish-channel.mjs --channel test --knowledge --dry-run |
160 | 161 | | CI 用 Node 22(npm 10)跑 publish | npm 10 不支持 OIDC token 交换,publish 报 404 | |
161 | 162 | | stable 发布前没有升级版本号 | 所选发布集合的版本已全部存在于 npm,CI 明确报错并要求先升级版本号 | |
162 | 163 | | channel job 缺少 `contents: write` | `gh release create` 失败 | |
| 164 | +| npm 先于二进制 / OSS 成功 | latest 已发出,CDN 上没有对应 zip/tar.gz;OSS 网络失败时无法回滚 npm | |
163 | 165 | | stable 未先推 tag 就建 Release | `--verify-tag` 失败 | |
0 commit comments