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)
| 子项目 | 方式 | 状态 | 说明 |
|---|---|---|---|
| channel | git pull → OWL/WOLF | ✅ | 2 个 commit 成功部署 |
| client-web | git pull → build → pm2 restart | ✅ | 正常 |
| gateway | tarball + rsync 到 relay | ✅ (修复后) | relay 不是 git 仓库 |
Gateway 部署的关键约束
⚠️ relay 服务器 (163.228.142.105) 上的 ~/relay-gateway 不是 git 仓库
- 没有
.git目录,git pull/git stash必然报错 - 之前是手动上传的目录
正确流程:
- 本地 (
gateway-repo):git fetch origin dev→git reset --hard origin/dev(本地可以用 git) - 部署到 relay:打包 tarball → scp 到 relay → rsync 解压(relay 上不能有任何 git 操作)
经验教训
这个问题反复出现过多次,已固化到 memory 和 AGENTS.md:
relay server 部署只能用 tarball + rsync,不能用 git pull。
相关页面
- clawline-gateway — Gateway 项目
- clawline-client-web — Client Web 项目
- clawline-plugin — Channel 插件
- monitoring-and-cron — Cron 任务管理