Clawline 自动部署

基于 Cron + GitHub API 的自动部署系统,每 3 分钟检测 GitHub push 并自动部署 Clawline 各子项目。

概述

Clawline 自动部署系统由两个核心脚本组成:watch-repos.sh 负责监控 GitHub 仓库的新 push,auto-deploy.sh 负责执行实际部署。系统通过 cron 每 3 分钟运行一次,覆盖 channel、client-web 和 gateway 三个子项目的自动化部署。

关键点

  • 运行频率:cron 每 3 分钟执行
  • 检测方式:通过 GitHub API 检测新 push
  • 部署范围:channel (OWL/WOLF)、client-web、gateway
  • Gateway 特殊处理:relay 服务器上不能使用 git 操作,必须用 tarball + rsync 部署

技术细节

部署流程

watch-repos.sh (cron 3min)
  └→ GitHub API 检测新 push
      └→ auto-deploy.sh
          ├─ channel:dev → git pull + 部署到 OWL/WOLF ✅
          ├─ client-web:dev → git pull + build + pm2 restart ✅
          └─ gateway:dev → git fetch + reset → 打包 → scp → rsync 到 relay ⚠️

部署状态(2026-04-11)

子项目方式状态说明
channelgit pull → OWL/WOLF2 个 commit 成功部署
client-webgit pull → build → pm2 restart正常
gatewaytarball + rsync 到 relay✅ (修复后)relay 不是 git 仓库

Gateway 部署的关键约束

⚠️ relay 服务器 (163.228.142.105) 上的 ~/relay-gateway 不是 git 仓库

  • 没有 .git 目录,git pull / git stash 必然报错
  • 之前是手动上传的目录

正确流程

  • 本地 (gateway-repo):git fetch origin devgit reset --hard origin/dev(本地可以用 git)
  • 部署到 relay:打包 tarball → scp 到 relay → rsync 解压(relay 上不能有任何 git 操作)

经验教训

这个问题反复出现过多次,已固化到 memory 和 AGENTS.md:

relay server 部署只能用 tarball + rsync,不能用 git pull。

相关页面