Skip to content

build(ci): 补发布链——release published 时 pack、断言资产名契约并上传回读 - #67

Merged
stack-wuh merged 10 commits into
mainfrom
build/20261012-build-ci-release-publish
Oct 12, 2026
Merged

stack-wuh merged 10 commits into
mainfrom
build/20261012-build-ci-release-publish

Conversation

@stack-wuh

Copy link
Copy Markdown
Owner

变更

  • scripts/publish.mjs(新增):发布链的唯一实现,五步顺序固定——版本权威断言 → pack.mjs 产出 → 资产名契约断言 → gh release upload --clobber → 回读 release 的 assets 确认资产真的存在。导出 assertVersion / assertAssetName / readVersion / packArtifact / readBackAssetNames 供离线单测。
  • .github/workflows/publish.yml(新增):on: release: types: [published],permissions: contents: write,run: node scripts/publish.mjs --tag "$GITHUB_REF_NAME" —— 只有这一行委派,断言不在 yml 里重抄。
  • test/cli.test.mjs:三组用例(纯断言含反例、干跑与退出码、yml 单实现防回归)。

影响

  • 行为/触发面变化:以后 gh release create 会自动补齐资产;漏资产的 release 会被回读步骤判红,而不是静默让安装器在消费侧报 release asset not found。直接动因:v1.6.0 发布后 releases/tags/v1.6.0 的 assets 是空数组,资产是我手工 pack.mjs + gh release upload 补的(v1.4.0/v1.5.0 各 1 资产,说明历史上一直是手工)。
  • 明确不受影响的范围:不改 cli.mjs 与 lib/,命令目录零变化(无新命令键)→ 插件 requiresCommands 与 cliVersion 判定不受影响;install-cli.sh 的解析逻辑不动;既有 test.yml 触发矩阵不变;scripts/pack.mjs 未改,只是被调用。
  • 幂等与安全:--clobber 使重复触发不产生第二个同名资产;上传前任一断言失败即非零退出不上传。
  • 回滚方式:revert 即删除 yml 与脚本,发版退回手工补资产的老路径。

验证

  • 干跑:node scripts/publish.mjs --tag v1.6.0 --dry-run --json → ok:true,五步 steps 齐(后两步标 skipped (dry-run))。
  • 反证版本权威:--tag v9.9.9 → exit 1,VERSION_AUTHORITY: package.json 1.6.0 != tag 9.9.9。
  • 反证参数契约:缺 --tag → exit 2 --tag is required。
  • 反证资产名契约:shadow-dev-cli-latest.tar.gz 与 shadow-dev-cli-v1.6.0.tgz 均抛 ASSET_NAME_CONTRACT;shadow-dev-cli-v1.6.0.tar.gz 放行。
  • 单实现防回归:用例断 publish.yml 必须含委派行,且不得出现 pack.mjs / VERSION_AUTHORITY / ASSET_NAME_CONTRACT——断言回拷进 yml 即判红。
  • 子集:--test-name-pattern publish.mjs 2 绿、publish.yml 1 绿、publish 全组(含既有 publish 域用例)无回归。
  • 未覆盖项(明说):upload 与 read-back 只在下一个真实 tag 上端到端执行;本轮无法自证。验收点是 Actions 的 publish-release 绿 + releases/tags/<新 tag> 恰有一个合法名资产。

关联

@stack-wuh
stack-wuh merged commit ac2be3f into main Oct 12, 2026
9 checks passed
stack-wuh pushed a commit that referenced this pull request Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[build] CLI 缺发布工作流:release 无资产导致安装器 asset not found

1 participant