ci: 自动 release 工作流(测试门禁 + npm 发布 + GitHub Release) #14

Merged
weisanju merged 2 commits from ci/auto-release-workflow into main 2026-09-22 17:56:22 +08:00
weisanju commented 2026-09-22 17:54:02 +08:00 (Migrated from github.com)

Summary

  • 新增 .github/workflows/release.yml:推送版本 tag 后自动执行完整发布流水线 —— tag 格式与 package.json 版本一致性校验 → tsc 类型检查 + bun test 质量门禁 → 构建 → npm publish --provenance → 自动创建 GitHub Release(--generate-notes 自动生成变更说明)
  • 兼容两种历史 tag 命名:pi-model-auto-router/vX.Y.Z(斜杠式)与 pi-model-auto-router-vX.Y.Z(连字符式)——旧 publish.yml 只匹配斜杠式,0.2.1/0.3.1 的连字符式 tag 从未触发过 CI
  • 删除 publish.yml:功能已完全包含在 release.yml 中,保留会在同一 tag 触发两次 npm publish(第二次必然失败);且新工作流补上了发布前不跑测试的缺口
  • tag 校验使用白名单正则(semver),所有 shell 引用加引号,防注入

Test plan

  • YAML 语法校验通过
  • tag 校验脚本本地验证:两种格式合法 tag 通过、恶意输入与非法格式拒绝
  • 合并后推送 pi-model-auto-router/v0.4.0 tag 实测完整流水线(需 NPM_TOKEN secret 已配置)

发版流程(合并后)

git tag pi-model-auto-router/v0.4.0 && git push origin pi-model-auto-router/v0.4.0
## Summary - 新增 `.github/workflows/release.yml`:推送版本 tag 后自动执行完整发布流水线 —— tag 格式与 `package.json` 版本一致性校验 → `tsc` 类型检查 + `bun test` 质量门禁 → 构建 → `npm publish --provenance` → 自动创建 GitHub Release(`--generate-notes` 自动生成变更说明) - **兼容两种历史 tag 命名**:`pi-model-auto-router/vX.Y.Z`(斜杠式)与 `pi-model-auto-router-vX.Y.Z`(连字符式)——旧 publish.yml 只匹配斜杠式,0.2.1/0.3.1 的连字符式 tag 从未触发过 CI - 删除 `publish.yml`:功能已完全包含在 release.yml 中,保留会在同一 tag 触发两次 npm publish(第二次必然失败);且新工作流补上了发布前不跑测试的缺口 - tag 校验使用白名单正则(semver),所有 shell 引用加引号,防注入 ## Test plan - [x] YAML 语法校验通过 - [x] tag 校验脚本本地验证:两种格式合法 tag 通过、恶意输入与非法格式拒绝 - [ ] 合并后推送 `pi-model-auto-router/v0.4.0` tag 实测完整流水线(需 `NPM_TOKEN` secret 已配置) ## 发版流程(合并后) ```bash git tag pi-model-auto-router/v0.4.0 && git push origin pi-model-auto-router/v0.4.0 ```
Sign in to join this conversation.
No description provided.