云端自动构建部署

在云服务器上监听 Gitee 的 push 事件,自动拉取代码、npm run docs:build 并同步到网站根目录,替代本地「手动构建 + 上传」。

文件

  • deploy.sh:部署主脚本(pull → install → build → rsync 到网站根)
  • webhook.mjs:极简 HTTP 监听,仅用 Node 内置模块,收到 Gitee push 后调用 deploy.sh

服务器端一次性准备

bash
# 1. 安装依赖(构建需要)
#    Node ≥ 18,并安装 rsync(多数 Linux 已自带)

# 2. 克隆仓库到 REPO_DIR
git clone https://gitee.com/tavis-el/eco-ev2025.git /var/www/eco-ev2025
cd /var/www/eco-ev2025
npm ci

# 3. 按需修改 deploy/deploy.sh 顶部的路径(REPO_DIR / WEB_ROOT)
chmod +x deploy/deploy.sh

# 4. 用密钥与端口启动 webhook(建议用 pm2 / systemd / nohup 保活)
WEBHOOK_TOKEN='你的密钥' WEBHOOK_PORT=9000 node deploy/webhook.mjs
# 例如后台保活:
# nohup env WEBHOOK_TOKEN='你的密钥' WEBHOOK_PORT=9000 node deploy/webhook.mjs > webhook.log 2>&1 &

Gitee 配置 WebHook

  1. 仓库「设置 → WebHooks → 添加」。
  2. URL 填:http://<服务器公网IP>:9000/(若服务器前有反代/防火墙,需放通该端口)。
  3. 密钥(Secret)填与上面 WEBHOOK_TOKEN 一致的值(留空则不校验)。
  4. 触发事件选「Push」。

使用

本地改完直接:

bash
git add -A && git commit -m "..." && git push

推送后服务器自动构建并部署,无需本地 npm run docs:build,也无需手动上传。

备注

  • WEB_ROOT 指向 nginx 等 Web 服务器实际站点根目录;若用 Gitee Pages / 对象存储,把 deploy.sh 里的 rsync 换成对应上传命令即可。
  • 首次部署可手动跑一次 bash deploy/deploy.sh 验证路径正确。
  • 若服务器不支持公网入站 WebHook,可用 Gitee Go / GitHub Actions 等 CI 在云端构建后,再用 SSH/SCP 把 dist 推回服务器。