版本迭代与发布
日常文档/代码维护不自动改版本。版本唯一修改入口是 scripts/version.mjs;先执行 pnpm version:check。 正式新发布执行 pnpm version:bump patch|minor|major,指定固定版本的本地重构建保持版本不变。 版本落点由脚本清单决定,不另维护“文件数/落点数”。
构建与验证
pnpm version:check
pnpm lint
pnpm typecheck
pnpm check:icons
pnpm docs:check
pnpm verify:e2e
pnpm verify:v14
pnpm verify:courseware
pnpm build:desktop
pnpm verify:desktop
pnpm --filter @classhelper/web-admin build
pnpm verify:web:isolated
pnpm dist:all
pnpm verify:packaged --exe "releases/client/<版本>/安装包/ClassHelper-<版本>-x64-portable.exe" --offline
以上按发布改动范围执行;显式 --visual 才是桌面视觉验收。测试数量和结果必须来自本次输出。 完整边界见验收。同号本地重构建先保留可恢复副本,最新包核验完成后按用户要求清理旧归档。 版本目录与清单以本次实际构建结果为准;历史清理记录不代表当前保留的版本。
产物与文件名
| 本地构建产物 | GitHub Release 上传名 |
|---|---|
| releases/client/<版本>/安装包/ClassHelper-<版本>-x64-setup.exe | ClassHelper-<版本>-x64-client-setup.exe |
| releases/client/<版本>/安装包/ClassHelper-<版本>-x64-portable.exe | ClassHelper-<版本>-x64-client-portable.exe |
| releases/server/<版本>/安装包/ClassHelper 服务端-<版本>-x64-setup.exe | ClassHelper-<版本>-x64-server-setup.exe |
| releases/server/<版本>/linux-x64/classhelper-server-linux-x64-<版本>.tar.gz | 同名 |
Windows 服务端安装包只携带配置占位符,首次安装时生成独立的 JWT 密钥;覆盖升级保留原有 .env。pnpm verify:server-bootstrap 验证密钥独立性和配置保留,打包后还需在解包副本中复验。
Linux 还需同名 .tar.gz.sha256。正式 Linux 包在 Linux runner 运行 pnpm dist:server:linux; Windows 上的交叉构建仅作验证,可能缺目标平台的 Prisma engine。 构建中间物可再生成,不将 win-unpacked、server staging 或解包副本当交付物保留。
更新日志与校验
releases/ReleaseNotes-<版本>.md 维护本批包的功能、升级须知、实际验证范围与文件清单。 它描述该构建批次,不能把之后的源码功能写成旧包已经包含。 SHA256SUMS-<版本>.txt 用上传名记录各文件哈希;本地查验必须先按上表映射,不能因为本地文件没带 client/server 后缀就判断丢包。 可在 PowerShell 对 client/server 安装包运行 Get-FileHash -Algorithm SHA256,将三项实际结果按上传名写入清单。 不要仅对客户端目录做重定向而漏掉服务端;Linux 行待 CI 完成后同步。
发布同步
完成验证和本地更新日志后,检查 diff,按用户授权提交和推送 master;不要把其他未完成改动一并提交。 将三个 Windows 包复制到独立的 .cache/release-staging/<版本>/,使用上传名,避免通配符混入别的版本。 先准备当前 Windows SHA256 清单并随 Release 上传。创建 Release 时显式 --target master 或明确提交,说明用 --notes-file。 ClassIsland 插件已退役,不再上传插件资产。
# <版本> 和提交均替换为本次实际值
gh release create v<版本> --target master --title "ClassHelper v<版本>" --notes-file releases/ReleaseNotes-<版本>.md
gh release upload v<版本> <三个已按上传名暂存的EXE> releases/SHA256SUMS-<版本>.txt
推送 v* tag 触发 release-linux-server.yml,按 tag 检出,在 Ubuntu 构建并上传 Linux 包、独立 .sha256,合并跨组件清单。
等待 Actions 成功,再下载 Linux 文件和最终 SHA256SUMS 同步回本地;检查清单的 Windows 行仍与本次文件一致。
如需重跑,可手动运行该 workflow,指定准确 tag 和 attach=true。master 修复不会自动改变旧 tag 指向。
用户明确要求同版本更新远端服务端资产时,可额外指定 source_ref 为经过验证的完整提交 SHA;版本仍须与目标 tag 一致。保留原标签,在发布说明注明服务端重建提交及客户端沿用原批次,更新两个平台的服务端包与摘要。
官网和文档站由 pages.yml 拼装同一个站点:官网根、文档 /docs/。文档版本徽标读根 package.json, 官网和下载页兜底版本由 version 脚本维护。Linux workflow 与 Pages 是独立流水线,分别确认结果。 官网行为变化同步 README 与相应帮助章节,功能索引放源码索引。
已发布版本与回滚
已公开且用户安装的版本建议发补丁版本修复,避免同号不同内容使更新缓存/忽略版本与摘要失配。 用户明确要求固定版本重构建时,按要求保持版本,并清楚区分本地包和远端资产;不自动改远端 tag/Release。 仅说明或文档错误直接修改说明/文档;线上故障按对应部署形态从完整备份恢复。