跳到主要内容

GitHub + Vercel 部署文档站

这个仓库的文档站放在 website/,源码仍由 GitHub 托管,线上部署交给 Vercel Git Integration。这样可以避免手写 GitHub Actions 部署脚本,也避免和 Vercel 的预览部署机制重复。

本地开发

cd website
npm install
npm run start

生产构建验证:

npm run typecheck
npm run build

Vercel 项目设置

在 Vercel 导入 GitHub 仓库后,使用以下设置:

配置
GitHub Repositoryniaopian/iac-gitops-hybrid-k8s-ha
Vercel Projectiac-gitops-hybrid-k8s-ha
Root Directorywebsite
Framework PresetDocusaurus (v2+)
Install Commandnpm install
Build Commandnpm run build
Output Directorybuild
Production Branchmain
Production Domainzen1th.tech

当前项目实际依赖 Docusaurus 3.10.1。Vercel Dashboard 中的 Docusaurus (v2+) 是平台预设名称,适用于当前 Docusaurus v3 静态站点;website/vercel.json 也保留了同样的构建意图,便于 Vercel 识别静态输出目录。

自定义域名 DNS

在 Vercel 项目中添加 zen1th.tech 后,到域名 DNS 服务商处添加或确认:

主机记录类型
@A216.198.79.1

Vercel 旧的 apex A 记录 76.76.21.21 仍可继续工作,但当前 Dashboard 推荐使用 216.198.79.1

如果后续也需要 www.zen1th.tech,再添加:

主机记录类型
wwwCNAMEcname.vercel-dns-0.com

DNS 生效后,Vercel 会自动签发 HTTPS 证书。

自动部署行为

  • 推送到 main:触发 Production Deployment。
  • Pull Request 或功能分支:触发 Preview Deployment。
  • Preview 验证通过后再合并,生产站点会自动更新。

发布前检查

cd website
npm run typecheck
npm run build

发布前还要确认构建产物不包含运行产物或敏感信息:

find build -type f -name '*tfvars*' -o -name '*tfstate*' -o -name '*kubeconfig*'

如果命令输出为空,说明没有按这些文件名发布敏感运行产物。

为什么不用 GitHub Actions

Vercel Git Integration 已经提供:

  • 每个分支独立预览 URL。
  • PR 级别的 Preview Deployment。
  • main 分支自动发布生产环境。
  • 构建日志和回滚入口。

手写 GitHub Actions 反而会引入额外 token、重复部署链路和维护成本。