完善会话消息删除、Qwen 联网搜索/深度思考参数与 SSE 来源事件,同时增加请求体日志与 TS6 配置兼容调整,并新增 Ubuntu+PM2+Nginx 的部署文档与脚本以支持可回滚发布。 Made-with: Cursor
76 lines
1.8 KiB
Bash
76 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
APP_NAME="chat-one-service"
|
|
APP_ROOT="${APP_ROOT:-/srv/chat-one-service}"
|
|
REPO_URL="${REPO_URL:-}"
|
|
BRANCH="${BRANCH:-main}"
|
|
KEEP_RELEASES="${KEEP_RELEASES:-5}"
|
|
|
|
if [[ -z "$REPO_URL" ]]; then
|
|
echo "REPO_URL is required. Example:"
|
|
echo " REPO_URL=git@github.com:org/chat-one-service.git scripts/deploy.sh"
|
|
exit 1
|
|
fi
|
|
|
|
command -v yarn >/dev/null 2>&1 || {
|
|
echo "yarn is required"
|
|
exit 1
|
|
}
|
|
command -v pm2 >/dev/null 2>&1 || {
|
|
echo "pm2 is required"
|
|
exit 1
|
|
}
|
|
command -v git >/dev/null 2>&1 || {
|
|
echo "git is required"
|
|
exit 1
|
|
}
|
|
|
|
RELEASES_DIR="$APP_ROOT/releases"
|
|
SHARED_DIR="$APP_ROOT/shared"
|
|
CURRENT_LINK="$APP_ROOT/current"
|
|
RELEASE_NAME="$(date +%Y%m%d_%H%M%S)"
|
|
RELEASE_DIR="$RELEASES_DIR/$RELEASE_NAME"
|
|
|
|
mkdir -p "$RELEASES_DIR" "$SHARED_DIR/logs"
|
|
|
|
echo "==> Cloning repository"
|
|
git clone --branch "$BRANCH" --depth 1 "$REPO_URL" "$RELEASE_DIR"
|
|
|
|
if [[ ! -f "$SHARED_DIR/.env" ]]; then
|
|
echo "Missing $SHARED_DIR/.env"
|
|
exit 1
|
|
fi
|
|
|
|
ln -sfn "$SHARED_DIR/.env" "$RELEASE_DIR/.env"
|
|
|
|
cd "$RELEASE_DIR"
|
|
|
|
echo "==> Installing dependencies"
|
|
yarn install --frozen-lockfile
|
|
|
|
echo "==> Building project"
|
|
yarn build
|
|
|
|
echo "==> Running database migrations"
|
|
npx prisma migrate deploy
|
|
|
|
echo "==> Switching current symlink"
|
|
ln -sfn "$RELEASE_DIR" "$CURRENT_LINK"
|
|
|
|
if pm2 describe "$APP_NAME" >/dev/null 2>&1; then
|
|
echo "==> Reloading PM2 process"
|
|
pm2 reload "$APP_NAME" --update-env
|
|
else
|
|
echo "==> Starting PM2 process"
|
|
pm2 start "$CURRENT_LINK/ecosystem.config.js" --env production
|
|
fi
|
|
|
|
echo "==> Smoke check"
|
|
curl -fsS "http://127.0.0.1:${PORT:-3000}/api/docs" >/dev/null
|
|
|
|
echo "==> Cleaning old releases (keep $KEEP_RELEASES)"
|
|
ls -1dt "$RELEASES_DIR"/* 2>/dev/null | tail -n +"$((KEEP_RELEASES + 1))" | xargs -r rm -rf
|
|
|
|
echo "Deploy success. Current release: $RELEASE_DIR"
|