发布准备
DebianClub 发布前质量门禁:构建、搜索索引、关键路由、静态导出产物和回滚检查。
发布准备阶段用于把各阶段内容改动收束成可上线状态。重点不是新增页面数量,而是确认用户会访问的入口、搜索、静态导出和部署边界都可用。
发布门禁
每次发布前至少跑完这些检查:
| 检查项 | 目标 | 失败时处理 |
|---|---|---|
| 类型检查 | MDX、路由类型和 TypeScript 能通过 | 先修类型或组件注册问题 |
| 生产构建 | Next.js 静态导出能完整生成 | 查看具体页面或组件报错 |
| 搜索索引 | 每个语言索引分片存在且小于 25 MiB | 重新拆分索引或减少单文件体积 |
| 关键页面 | 首页、AI Skills、场景、硬件、版本、工具箱可访问 | 修复导航、meta 或内容路径 |
| 静态资源 | 图片、favicon、sitemap、robots、skills registry 存在 | 修复 public 或导出脚本 |
本地命令
在仓库根目录执行:
. "$HOME/.nvm/nvm.sh"
corepack pnpm --dir web types:check
corepack pnpm --dir web build
corepack pnpm --dir web release:checkrelease:check 会检查 web/out 中的关键 HTML、skills.json、sitemap.xml、robots.txt,以及 web/out/api/search/{locale} 搜索索引分片。
搜索验证
搜索组件请求的是按语言拆分后的路径:
| 语言 | 索引路径 |
|---|---|
| 中文 | /api/search/zh |
| 英文 | /api/search/en |
| 德文 | /api/search/de |
| 西班牙文 | /api/search/es |
| 法文 | /api/search/fr |
| 日文 | /api/search/ja |
| 韩文 | /api/search/ko |
| 葡萄牙文 | /api/search/pt |
不要把 /api/search?locale=zh 当成前端搜索路径;静态导出部署下它可能表现为目录页。真实客户端路径由 web/components/search.tsx 控制。
路由抽样
本地预览启动后,抽样检查这些路径:
for path in / /en /ai/skills /en/ai/skills /scenarios /en/scenarios /hardware /en/hardware /versions /en/versions /tools /en/tools; do
curl -L -s -o /tmp/debianclub-route-check.html -w "%{http_code} $path\n" "http://localhost:43018$path"
done所有路径都应返回 200。如果本地端口不同,把 43018 换成当前预览端口。
部署前检查
- 确认
web/out/api/search/*没有超过 Cloudflare Pages 单文件限制。 - 确认导航中的中文和英文入口都指向已存在页面。
- 确认新增内容没有把远程安装脚本直接管道给 shell 的不可审计安装方式。
- 确认 AI Skills 安装命令仍然只引用仓库内脚本。
- 确认工具页输出不会自动修改系统,危险操作只作为人工确认后的建议。
回滚策略
如果部署后出现搜索、导航或 hydration 问题,先回滚到上一版静态产物,再定位:
- 对比
web/out/api/search是否仍为分片目录。 - 检查最近新增的 client component 是否依赖浏览器状态生成首屏文本。
- 复跑
types:check、build、release:check。 - 用最小路由集合验证
/、/en、/tools、/en/tools。