Files
hmo ea193a9881 chore: retire legacy wechat-hermes-gateway xmpp_bot, unify bridge to :5807
Old xmpp_bot.py (PID-locked separately) coexisted with new xmpp_agent_core,
causing duplicate JID connections and split bridge traffic (5802 vs 5807).
Deploy scripts now use new bot's :5807 bridge with X-Api-Key auth.
2026-07-23 13:59:11 +08:00

76 lines
3.0 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# sync-venv.sh — 将 git 仓库的最新代码同步到 agentsmeeting-venv 并重启
#
# 用法: bash deploy/linux/sync-venv.sh
# 位置: 在 246 上运行 (hmo@192.168.1.246)
#
# 原理: git 仓库 ~/projects/AgentsMeeting/ 是开发主阵地,
# 但 production dashboard 跑在 /home/hmo/agentsmeeting-venv/ 下。
# 这个脚本把仓库中的关键文件同步到 venv 并重启服务。
set -e
REPO_DIR="$HOME/projects/AgentsMeeting"
VENV_DIR="/home/hmo/agentsmeeting-venv"
DASH_LOG="/tmp/dash.log"
echo "=== sync-venv: $(date) ==="
echo "仓库: $REPO_DIR"
echo "目标: $VENV_DIR"
# 1. 确保仓库是最新
cd "$REPO_DIR"
git pull --rebase origin master 2>&1 | tail -2
# 2. 同步关键文件
echo "--- 同步文件 ---"
cp -v "$REPO_DIR/gateway/scripts/dashboard.py" "$VENV_DIR/dashboard.py"
cp -v "$REPO_DIR/gateway/scripts/service_registry.py" "$VENV_DIR/service_registry.py" 2>/dev/null || true
cp -v "$REPO_DIR/gateway/scripts/proc_guard.py" "$VENV_DIR/proc_guard.py" 2>/dev/null || true
cp -v "$REPO_DIR/gateway/scripts/tests_api.py" "$VENV_DIR/tests_api.py" 2>/dev/null || true
cp -v "$REPO_DIR/gateway/scripts/checklist_audit.py" "$VENV_DIR/checklist_audit.py" 2>/dev/null || true
cp -v "$REPO_DIR/gateway/scripts/templates/dashboard.html" "$VENV_DIR/templates/dashboard.html"
# 3. 重启 dashboard
echo "--- 重启 dashboard ---"
# 使用 fuser -k :5803 杀掉占端口的老进程(pkill 可能因进程命令行不含路径而漏杀)
if fuser -k 5803/tcp 2>/dev/null; then
echo "杀掉旧 dashboard 进程 (fuser -k :5803)"
sleep 2
fi
# 自动检测 repo 根目录并设为 AGENTSMEETING_ROOTA-F 端点依赖此路径找 .git 和 gateway/temp
export AGENTSMEETING_ROOT="$REPO_DIR"
# XMPP BridgeEasyTier/RDP 操作通过 Windows 的 xmpp_agent_core :5807 代理)
export XMPP_BRIDGE_URL="http://192.168.1.16:5807"
cd "$VENV_DIR"
nohup python3 dashboard.py > "$DASH_LOG" 2>&1 &
sleep 3
# 4. 备份(用于回滚)
BACKUP_DIR="/tmp/sync-venv-backup-$(date +%s)"
mkdir -p "$BACKUP_DIR"
cp -v "$VENV_DIR/dashboard.py" "$BACKUP_DIR/" 2>/dev/null || true
cp -v "$VENV_DIR/tests_api.py" "$BACKUP_DIR/" 2>/dev/null || true
cp -v "$VENV_DIR/templates/dashboard.html" "$BACKUP_DIR/" 2>/dev/null || true
echo "备份: $BACKUP_DIR"
# 5. 验证 — K 测试无意外失败才算部署完成
echo "--- 部署后验证 ---"
if ! bash "$REPO_DIR/deploy/linux/post-deploy-check.sh"; then
echo "!!! 验证失败,正在回滚 !!!"
cp -v "$BACKUP_DIR/dashboard.py" "$VENV_DIR/dashboard.py" 2>/dev/null || true
cp -v "$BACKUP_DIR/tests_api.py" "$VENV_DIR/tests_api.py" 2>/dev/null || true
cp -v "$BACKUP_DIR/templates/dashboard.html" "$VENV_DIR/templates/dashboard.html" 2>/dev/null || true
fuser -k 5803/tcp 2>/dev/null || true
sleep 2
cd "$VENV_DIR"
nohup python3 dashboard.py > "$DASH_LOG" 2>&1 &
sleep 3
echo "回滚完成。验证日志:"
bash "$REPO_DIR/deploy/linux/post-deploy-check.sh" 2>&1 || true
exit 1
fi
echo "=== sync-venv 完成: $(date) ==="