Repository navigation
build(sdk): 改为锁定官方发布的 Node.js SDK 0.3.0 并发布 0.1.3 预发布 - #7
Open
xiaoyumuxi wants to merge 1 commit into
Open
xiaoyumuxi wants to merge 1 commit into
xiaoyumuxi wants to merge 1 commit into
Conversation
- sdk.lock.json 改为 schema 2,锁定 lithe-plugin-docs 的 sdk-node-v0.3.0(提交、 发布包 URL、SHA-256),逐文件记录发布包内路径和哈希,不再有 localChanges - 重新从发布包取 backend.mjs、diagnostics.mjs、index.d.ts,其余 SDK 文件与旧锁定逐字节相同 - verify-sdk.mjs 新增 --download:下载发布包、校验 SHA-256,并要求本地文件与包内容一致 - CI 与发布流程改为运行 verify-sdk.mjs --download - 版本 0.1.2 -> 0.1.3,发布说明改为 SDK 锁定变更与兼容性说明 - 发布流程在 gh release create 后回读 isPrerelease,不是预发布时修正并在仍失败时报错
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
把 Cargo 插件随包的 Node.js SDK 从本地副本改为锁定官方发布的 Node.js SDK 0.3.0(tag
sdk-node-v0.3.0+ SHA-256),并发布 0.1.3 预发布。插件行为不变。SDK 0.3.0 含结构化日志(
litheLogging 1)实现,所以基于它的版本只能在提供litheLogging 1的 Lithe 预览版上启动;稳定版 Lithe 0.6.7 没有该能力,这些用户继续使用 0.1.1。因此 0.1.3 仍按预发布发布。改动点
重新取 SDK 文件(与旧锁定的差异)
https://github.com/Lithe-IDEA/lithe-plugin-docs,tagsdk-node-v0.3.0,提交940394fcd8455186ee985e6c34a319032414607f,发布包lithe-plugin-sdk-node-0.3.0.tgz,SHA-256d69cb09c4e87aeb0e01ea46e8b1dc80871de56de3729de451f6d9a64a18c4227。errors.mjs、framing.mjs、host.mjs、index.mjs、process.mjs、protocol.mjs、state.mjs、LICENSE与发布包逐字节相同,没有变化。vendor/lithe-plugin-sdk/src/backend.mjs:发布版多了keymapImportProvider和litheKeymapImport协商(0.3.0 新增,本插件不用,不注册就不会协商)。vendor/lithe-plugin-sdk/src/diagnostics.mjs:方法白名单多了lithe/keymap/import。vendor/lithe-plugin-sdk/src/index.d.ts:多了快捷键导入相关类型声明。vendor/lithe-plugin-sdk/test/harness.mjs(测试用宿主)不在发布包里,内容与 tag 提交sdk/node/test/harness.mjs逐字节相同,锁定为sdkCommit来源。vendor/lithe-testing/*来自 Lithe 主仓库的测试辅助脚本,文件内容不变,仍按原提交固定。sdk.lock.json(schema 2)sdk:包名、版本 0.3.0、仓库、tag、提交、发布包 URL、发布包 SHA-256。files[]:每个文件只记录origin(sdkArchive发布包 /sdkCommittag 提交 /testSupport测试辅助)、upstream(发布包内路径或仓库路径)、path、sha256。不允许localChanges或其他字段。testSupport:测试辅助脚本的来源仓库和提交;coreSource:集成测试使用的宿主预览(含义不变,prerequisite文案改为当前事实:宿主需提供litheLogging 1)。scripts/verify-sdk.mjssdk-node-v<版本>tag、对应的发布包 URL,提交和哈希格式正确;逐文件 SHA-256 必须一致;vendor/下不允许出现未登记文件;SDK 源文件必须来自发布包;禁止localChanges。--download:下载发布包(HTTPS、有大小和超时上限、重试 3 次),校验 SHA-256 与锁文件一致,在内存里解包(不落盘、拒绝路径穿越、重复和非常规条目),确认package/package.json的包名和版本,并逐字节比较sdkArchive文件;sdkCommit文件从 tag 提交的 raw 地址下载并比较。test/sdk-lock.test.mjs(全部离线,用测试内合成的 tar.gz 与注入的下载函数):锁文件指向官方发布且无本地修改;错误仓库、tag、URL、提交、哈希、旧 schema、localChanges、非法来源或路径被拒绝;下载校验通过路径;发布包哈希不符、本地文件与发布包不一致、发布包缺文件、包版本不符、tag 文件变化均被拒绝;tar 读取器拒绝不安全条目。版本与文档
0.1.2->0.1.3:plugin.json、backend/main.mjs里的createBackend版本、README 安装和兼容说明。litheLogging 1的 Lithe 构建”,说明--download校验和 SDK 更新步骤,删除“未发布 SDK/本地日志改动”的表述。宿主仓库(Lithe 主仓库)仍是集成测试的 Core 来源,保留。release.yml里的发布说明改为 0.1.3:SDK 改为锁定官方发布的 0.3.0(tag + SHA-256),行为不变,仍需提供litheLogging 1的 Lithe 预览版,稳定版 0.6.7 用户继续使用 0.1.1。发布流程(
.github/workflows/)release.yml沿用硬编码的gh release create --prerelease,所以 0.1.3 作为预发布发布。gh release create之后用gh release view "$RELEASE_TAG" --json isPrerelease回读;不是预发布就gh release edit "$RELEASE_TAG" --prerelease,修正后仍不是则报错失败。该步骤放在单独一步,已存在 release 直接校验字节后退出的路径也会被检查。(背景:Maven v0.1.2 用了--prerelease却变成了正式版。)ci.yml和release.yml的 SDK 校验改为node scripts/verify-sdk.mjs --download。测试
本地(Node 24,macOS):
node scripts/verify-sdk.mjs:通过。node scripts/verify-sdk.mjs --download:通过(下载真实发布包,SHA-256 与文件内容、tag 提交里的 harness 均一致)。node scripts/test.mjs:22 项,18 通过,0 失败,4 项因没有准备 Core 桥接而按设计跳过(含新增的 8 项 SDK 锁定测试)。node scripts/package.mjs:成功生成cargo-build-0.1.3-darwin.zip。actionlint:新增步骤无问题(仅有改动前就存在的 shellcheck 提示)。需要 Lithe Core 桥接的集成测试(
LITHE_CARGO_INTEGRATION=1,含真实 SDK 经过 Core 的 build/check/test/run 流程)本地未跑,由本 PR 的 CI 运行(CI 会检出宿主preview并编译桥接)。