Stop tracking deploy.sh (local-only)

This commit is contained in:
JOJO 2026-01-23 01:59:59 +08:00
parent 165b41e4ad
commit 77bad66c23
2 changed files with 3 additions and 89 deletions

3
.gitignore vendored
View File

@ -12,3 +12,6 @@ __pycache__/
# RAG model weights and caches # RAG model weights and caches
minirag/minirag/models/ minirag/minirag/models/
minirag/minirag/cache/ minirag/minirag/cache/
# local deploy helper (contains secrets in some environments; keep out of git)
deploy.sh

View File

@ -1,89 +0,0 @@
#!/usr/bin/env bash
# 一键部署脚本:打包本地 workspace排除模型与 .git上传到远端并重启服务
set -euo pipefail
SERVER="${SERVER:-120.55.190.8}"
USER="${USER:-root}"
# 强烈建议使用 SSH Key如需密码方式请通过环境变量传入
# export DEPLOY_PASS='your_password'
PASS="${DEPLOY_PASS:-}"
REMOTE_DIR="${REMOTE_DIR:-/root/workspace}"
# 通过环境变量注入 Moonshot Key不要写死在脚本里
# export MOONSHOT_API_KEY='sk-...'
MOONSHOT_KEY="${MOONSHOT_API_KEY:-}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ARCHIVE="/tmp/nianjie_deploy_$(date +%Y%m%d%H%M%S).tar.gz"
if ! command -v sshpass >/dev/null 2>&1; then
echo "[ERROR] 需要安装 sshpass 以使用密码方式非交互上传/执行。" >&2
exit 1
fi
if [ -z "${PASS}" ]; then
echo "[ERROR] 未设置 DEPLOY_PASS远端 SSH 密码)。" >&2
exit 1
fi
if [ -z "${MOONSHOT_KEY}" ]; then
echo "[WARN] 未设置 MOONSHOT_API_KEY云端 AI 模式可能无法调用外部模型。" >&2
fi
echo "[1/5] 打包本地 workspace -> ${ARCHIVE}"
# macOS: 避免打包扩展属性导致远端 tar 警告
COPYFILE_DISABLE=1 tar -czf "${ARCHIVE}" \
--exclude='.git' \
--exclude='*/.git*' \
--exclude='minirag/minirag/cache' \
-C "${SCRIPT_DIR}" .
echo "[2/5] 上传压缩包到 ${SERVER}:/root/"
sshpass -p "${PASS}" scp -o StrictHostKeyChecking=no "${ARCHIVE}" "${USER}@${SERVER}:/root/"
echo "[3/5] 远端处理(停服、清理、解压、重启)"
sshpass -p "${PASS}" ssh -o StrictHostKeyChecking=no "${USER}@${SERVER}" MOONSHOT_KEY="${MOONSHOT_KEY}" bash -s <<'EOF'
set -euo pipefail
ARCHIVE="$(ls -t /root/nianjie_deploy_*.tar.gz | head -n1)"
REMOTE_DIR="/root/workspace"
MODEL_PATH="${REMOTE_DIR}/minirag/minirag/models"
BACKUP_DIR="/root/model_backup_$(date +%s)"
echo " - 查杀 8081 端口进程"
if command -v lsof >/dev/null 2>&1; then
if pids=$(lsof -t -i:8081 || true); then
[ -n "$pids" ] && kill -9 $pids || true
fi
elif command -v fuser >/dev/null 2>&1; then
fuser -k 8081/tcp || true
fi
echo " - 备份旧模型(如存在)"
if [ -d "$MODEL_PATH" ]; then
mkdir -p "$BACKUP_DIR"
mv "$MODEL_PATH" "$BACKUP_DIR/"
echo " 备份到 $BACKUP_DIR/models"
fi
echo " - 清空远端 workspace 目录"
mkdir -p "$REMOTE_DIR"
rm -rf "$REMOTE_DIR"/*
echo " - 解压最新包到 workspace"
tar -xzf "$ARCHIVE" -C "$REMOTE_DIR"
echo " - 恢复模型"
if [ -d "$BACKUP_DIR/models" ]; then
mkdir -p "$REMOTE_DIR/minirag/minirag"
rm -rf "$REMOTE_DIR/minirag/minirag/models"
mv "$BACKUP_DIR/models" "$REMOTE_DIR/minirag/minirag/" || true
echo " 模型已恢复"
fi
echo " - 后台重启服务(注入 MOONSHOT_API_KEY"
cd "$REMOTE_DIR/dialog"
export MOONSHOT_API_KEY="${MOONSHOT_KEY:-}"
nohup python3 app.py > app.log 2>&1 &
echo " 启动完成pid: $!"
EOF
echo "[4/5] 部署完成,包保留在 ${ARCHIVE}(本机)与 /root/(远端)"
echo "[5/5] 结束"