Debian.Club

发布准备

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:check

release:check 会检查 web/out 中的关键 HTML、skills.jsonsitemap.xmlrobots.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 问题,先回滚到上一版静态产物,再定位:

  1. 对比 web/out/api/search 是否仍为分片目录。
  2. 检查最近新增的 client component 是否依赖浏览器状态生成首屏文本。
  3. 复跑 types:checkbuildrelease:check
  4. 用最小路由集合验证 //en/tools/en/tools

On this page