@tedbrain/vlink 0.1.120 → 0.1.122

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +123 -0
  2. package/binaries.json +8 -8
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -246,6 +246,129 @@ VLINK_VERSION=0.1.21 npx --registry=https://registry.npmmirror.com -y @tedbrain/
246
246
 
247
247
  ## 发布
248
248
 
249
+ ### 通过 SSH 调度 s02
250
+
251
+ 在干净的 `luyukai` 工作区使用一条命令完成推送、自动升级版本、容器构建和
252
+ 发布,不需要常驻 CI。其他分支可以通过 `--repo` 指向现有 `luyukai` worktree。
253
+
254
+ ```bash
255
+ ./scripts/publish_vlink_s02.sh --dry-run
256
+ ./scripts/publish_vlink_s02.sh
257
+ ./scripts/publish_vlink_s02.sh --resume
258
+ ```
259
+
260
+ 默认构建机为 `s02`,远端状态目录为 `~/.local/state/vlink-release-s02`,可用
261
+ `--host`、`--branch`、`--state-dir` 覆盖。`--bump minor|major`、`--version`、
262
+ `--jobs` 和 `--cargo-jobs` 控制版本与并发。远端使用独立 checkout,保留已有
263
+ 开发目录及其未提交修改;先提交并正常推回 Cargo 版本,再构建七个平台。
264
+ 分支发生并发更新时停止,不强制推送。成功后,本地工作区仍干净且 HEAD 未被
265
+ 用户改变时自动快进到远端版本提交。
266
+
267
+ 任务在 s02 后台执行,SSH 断开后仍可运行。`active.json` 指向最近一次任务,
268
+ 日志位于 `runs/<任务ID>/build.log`,状态和源码/版本提交 SHA 位于同目录的
269
+ `status.json`。失败后用 `--resume` 跟随或恢复原任务,避免重新选择版本。
270
+ 并发调用不能重复启动构建,已完成的步骤和已校验产物会复用。
271
+ 上传前和恢复时还会检查 Gitee release 的源码 SHA;若同版本属于其他构建,
272
+ 立即停止,不替换该 release 的附件。
273
+
274
+ `--dry-run` 不推送 Git、不写持久状态、不构建或发布。`--build-only` 会推送
275
+ 已提交源码到 Codeup,在远端生成版本提交并构建,但不推回该版本提交,也不发布
276
+ Gitee/d01/npm;之后可用 `--resume` 发布同一批签名产物。
277
+
278
+ 本机和远端均加载 `~/.proxy`。远端先加载已有的
279
+ `~/ted/servers/tedmind/docker/tedbrain-ci-env/vlink-release.env`,再加载
280
+ `~/.config/tedmind/vlink-release.env` 覆盖同名配置、保留其他变量;也可用
281
+ `--env-file <远端绝对路径>` 只加载指定文件。所需凭据与下方本机构建入口相同,值不会传到
282
+ 本机或写入任务请求。s02 需具备 Codeup 拉取/推送和 d01 下载目录写入权限。
283
+
284
+ npm 默认使用 s02 的 `~/.npmrc`,不会被旧的 `NPM_TOKEN` 环境变量覆盖。
285
+ `--npm-config <远端路径>` 可选择其他文件;`--npm-config ''` 改用 token
286
+ 环境变量。原 npmrc 不修改,认证配置临时复制为 `0600` 文件。正式发布前先运行
287
+ `npm whoami`,认证失败立即停止,不升级版本或开始编译。
288
+
289
+ Gitee 默认以其已有的 `master` 作为 release tag 目标;Codeup 源码提交并未
290
+ 镜像到 Gitee,真实源码 SHA 保存在构建记录和二进制中。若 Gitee 已包含所需引用,
291
+ 可通过 `--gitee-target <引用>` 指定。
292
+
293
+ 可调用仓库内的 [vlink-release-s02 Skill](../../../../../.agents/skills/vlink-release-s02/SKILL.md)
294
+ 执行这套流程。
295
+
296
+ ### 在构建机直接运行
297
+
298
+ CI 停止时,在仓库根目录使用手动发布入口:
299
+ 构建宿主机使用 Linux x86_64,需要 Python 3.9+、GNU tar、Git、curl、Node/npm
300
+ 以及可用的容器引擎和 Virtuoso 许可证。
301
+ s02 已缓存完整工具链镜像和 ic618 镜像,可同步本仓库当前版本后在 s02 的
302
+ checkout 中运行以下 Docker 示例。镜像存在时直接复用;只有缺少 Rust 工具链
303
+ 镜像时才构建镜像。ic618 缺失时加载共享归档,不重新构建它。
304
+
305
+ ```bash
306
+ # 查询线上版本并预览;不修改文件、不构建、不发布
307
+ ./scripts/publish_vlink_npm.sh --engine docker --dry-run
308
+
309
+ # 编译并正式发布;默认自动递增 patch 版本
310
+ ./scripts/publish_vlink_npm.sh --engine docker
311
+
312
+ # 发布中断后,使用原版本及原始构建产物继续
313
+ ./scripts/publish_vlink_npm.sh --resume
314
+ ```
315
+
316
+ 入口自动选择可用的 Docker 或 Podman,也可通过 `--engine` 或
317
+ `VLINK_CONTAINER_ENGINE` 指定。Podman 适配只对本次脚本及其子进程生效,
318
+ 不需要系统级 `docker` 别名或 Docker daemon。首次构建会自动准备缺失的
319
+ Rust 编译镜像;需要访问 Docker Hub、GHCR 和 Rust/crates 镜像源。
320
+ Virtuoso context 使用现有 `cadence-virtuoso:ic618-centos7` 镜像编译,缺失时
321
+ 沿用 `VLINK_CXT_IMAGE_ARCHIVE` 加载流程。
322
+ 旧版 OpenAccess 无法识别新内核时,使用镜像提供的 `linux_rhel60` 平台;
323
+ 自定义 Virtuoso 镜像可通过 `VLINK_CXT_OA_PLATFORM` 覆盖。
324
+
325
+ 版本基线取本地 Cargo、npm 已发布稳定版本和 Gitee 最新稳定 release 中的
326
+ 最高值,再递增并避开已有 release。支持 `--bump minor`、`--bump major`,
327
+ 或 `--version 0.1.121` 指定尚未发布且不低于本地/线上基线的版本。
328
+ 脚本更新 `Cargo.toml`、`Cargo.lock` 及 npm 元数据,使用默认完整功能编译七个
329
+ 平台,并校验每个 cxt manifest 和 SHA-256。发布顺序是 Gitee 二进制、d01
330
+ 正式下载镜像、npm;任一步失败立即停止。Git 提交和推送由调用者管理;正式
331
+ 发布会使用当前 HEAD 作为 Gitee 的 `target_commitish`,因此该提交需已在
332
+ Gitee 上可用。
333
+
334
+ 正式发布需要环境变量:
335
+
336
+ - `NPM_TOKEN`,兼容 `NODE_AUTH_TOKEN` 和原 CI 的 `TEDBRAIN_CI_NPM_TOEKN`;
337
+ 或使用 `--npm-config <npmrc路径>`(也可设置 `VLINK_NPM_CONFIG`)指定现有认证文件。
338
+ - `GITEE_TOKEN`,兼容 `TEDBRAIN_CI_GITEE_TOKEN` 和现有
339
+ `~/.config/tedmind/gitee_token` 文件。
340
+ - `VLINK_LOG_RELEASE_KEY`,用于在宿主机签署二进制,至少 32 UTF-8 字节。
341
+ 可从本机已有、Git 忽略的 `docker/tedbrain-ci-env/vlink-release.env` 导出。
342
+ - SSH 需能以 `D01_USER`(默认 `luyukai`)访问 `D01_HOST`(默认 `d01`)的
343
+ `/var/www/download_files` 目录,沿用现有发布脚本的权限要求。
344
+
345
+ 凭据不会写入源码或构建镜像。临时 npm 配置权限为 `0600`,退出时删除。
346
+ 发布进度和构建校验信息保存在
347
+ `${TED_DATA:-<仓库>/.tedbrain}/vlink-publish/manual-<version>.json`,与 CI 共用
348
+ 发布锁。`--resume` 复用校验通过的原始二进制;Gitee/d01 已完成时直接补发
349
+ npm,部分上传失败时用相同文件恢复。原始产物或校验信息丢失时会拒绝重建
350
+ 已发布版本。
351
+
352
+ 启动入口会先 `source ~/.proxy`(文件存在时),其导出的代理配置由 Python、
353
+ npm 和 Podman/Docker 子进程继承;文件不存在时沿用终端环境。
354
+ 连接失败时尝试直连,并明确打印回退信息。也可显式覆盖连接方式:
355
+
356
+ ```bash
357
+ ./scripts/publish_vlink_npm.sh --proxy direct --dry-run
358
+ ./scripts/publish_vlink_npm.sh --proxy http://proxy.example:7990 --dry-run
359
+ ```
360
+
361
+ 也可设置 `VLINK_RELEASE_PROXY`。显式指定代理时不会自动绕过它。
362
+ 个人代理地址及认证信息维护在 `~/.proxy`,不复制到仓库。
363
+
364
+ `--build-only` 会升级本地版本并构建、校验、预览 npm 包,不发布到外部。
365
+ 如果之后希望用 `--resume` 发布这批产物,构建时也需提供发布签名密钥。
366
+ 未签名的构建仅用于本地验证,可对尚未发布的版本用 `--version` 重新构建。
367
+ 默认并发为 2 个平台,每个平台 8 个 Cargo 编译任务,可用 `--jobs`、
368
+ `--cargo-jobs` 或现有 `VLINK_BUILD_JOBS`、`CARGO_BUILD_JOBS` 调整。
369
+
370
+ 已有的底层 npm 打包入口仍可独立使用,调用前需要准备匹配版本的二进制:
371
+
249
372
  ```bash
250
373
  cd biz/eda/packages/vlink/npm
251
374
  ./scripts/publish.sh --dry-run
package/binaries.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
- "version": "0.1.120",
2
+ "version": "0.1.122",
3
3
  "binaries": {
4
- "linux-x86_64": "9a4b691509c580df9294dc6370286480b199ea94173042f221b0ae24aedaba02",
5
- "linux-x86_64-glibc2.17": "edd26e8a641588bafa49d4615c1ab8a51ec8e9827da9d88e5bdec1e15ad4e8c0",
6
- "linux-aarch64": "72ef89c58f93c4c6d338fcb365e39b611070c97b41b1d2d0cdbf2680eae4d3b1",
7
- "macos-x86_64": "6bc560b8f5f8a787132e1be5dfaff833290c76999ef253c59caa0f29c1dfff40",
8
- "macos-aarch64": "e705ca0d1dc9d28df1b67f9dffb106b78ae4814bc60f288c1f7d43d44ff6d86e",
9
- "windows-x86_64.exe": "48df5488455edb7b8bf4036e3c5763c2a408a1f863af76aa379b28e86801b5e1",
10
- "windows-aarch64.exe": "04d1ca1c8fadd0fa47f6567304ed3011c7bf9a0961a8d105477b0783519b173c"
4
+ "linux-x86_64": "b748d4543b648789235b9f77aa591818360f26ca66c2a4789ffc847f040a72bc",
5
+ "linux-x86_64-glibc2.17": "5b0ae058282126bb22b3bba86d4a6c3bddc450047896c465fea178a91696155d",
6
+ "linux-aarch64": "4c0f2d49eb7d053782a44df96cc21e9b0b78e28fd6fbf3e0b48777d0888fbfd9",
7
+ "macos-x86_64": "66fdfda8b4de12ef719c9bf5cdcb89f3921586ddd6aaa4e3115c2e9bbec05ff9",
8
+ "macos-aarch64": "b5086aed9a6d299f7017dbec3e6230f317a488bf2e3bab126540ec8c4f29580d",
9
+ "windows-x86_64.exe": "56c46dbc3ef0b44ca30129d855e4bc16e8e39df3b1f5205543a59d30e73b1196",
10
+ "windows-aarch64.exe": "eded2270f21e69a81a551455385507b6766b2275d33089f74d58e6a9941dea77"
11
11
  }
12
12
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tedbrain/vlink",
3
- "version": "0.1.120",
3
+ "version": "0.1.122",
4
4
  "description": "vlink Virtuoso bridge CLI installer. Installs the matching platform binary at npm install time, like Claude Code / Codex.",
5
5
  "license": "UNLICENSED",
6
6
  "bin": {