From 209f2e3d05d4fa656ac929f271af52c59898d96a Mon Sep 17 00:00:00 2001 From: Sisyphus Date: Fri, 26 Jun 2026 16:55:40 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=B7=BB=E5=8A=A0=E4=B8=80=E9=94=AE?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E8=84=9A=E6=9C=AC=20scripts/deploy.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 自动构建 + rsync 编译产物和源码 + pm2 restart Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- scripts/deploy.sh | 63 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 scripts/deploy.sh diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100755 index 0000000..0f3f4e4 --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,63 @@ +#!/bin/bash +set -e + +# 一键部署:编译产物 + 源码同步到生产服务器 + PM2 重启 +# 用法: bash scripts/deploy.sh + +SSH_HOST="ubuntu@172.81.241.109" +DEPLOY_DIR="/opt/pingtai" +SSHPASS_VAR="${SSHPASS:-Jubianshuzi@2026}" +SSH_CMD="sshpass -p $SSHPASS_VAR ssh -o StrictHostKeyChecking=no" +RSYNC_CMD="sshpass -p $SSHPASS_VAR rsync -avz --delete" + +echo "==========================================" +echo " 部署开始: $(date '+%Y-%m-%d %H:%M:%S')" +echo "==========================================" + +# 1. 构建 +echo "" +echo "[1/5] 构建 API..." +npm run build -w apps/api 2>&1 | tail -3 +echo " ✅ API 构建完成" + +echo "[2/5] 构建 Web..." +npm run build -w apps/web 2>&1 | tail -3 +echo " ✅ Web 构建完成" + +# 2. 同步编译产物 +echo "" +echo "[3/5] 同步编译产物..." +$RSYNC_CMD apps/api/dist/ $SSH_HOST:$DEPLOY_DIR/apps/api/dist/ 2>&1 | tail -1 +echo " ✅ API dist 同步完成" +$RSYNC_CMD apps/web/.next/ $SSH_HOST:$DEPLOY_DIR/apps/web/.next/ 2>&1 | tail -1 +echo " ✅ Web .next 同步完成" + +# 3. 同步源码(排除构建产物和依赖) +echo "" +echo "[4/5] 同步源码..." +$RSYNC_CMD \ + --exclude='node_modules' \ + --exclude='dist' \ + --exclude='.next' \ + --exclude='*.db' \ + --exclude='*.db-journal' \ + --exclude='.env' \ + --exclude='.env.*' \ + --exclude='.git' \ + --exclude='.dev-api.pid' \ + --exclude='.dev-web.pid' \ + --exclude='public/uploads' \ + /Users/zou/Documents/02-平台开发/平台助手/ \ + $SSH_HOST:$DEPLOY_DIR/ 2>&1 | tail -1 +echo " ✅ 源码同步完成" + +# 4. 重启 PM2 +echo "" +echo "[5/5] 重启 PM2..." +$SSH_CMD $SSH_HOST "source ~/.nvm/nvm.sh 2>/dev/null; pm2 restart pingtai-api pingtai-web --update-env" 2>&1 | tail -3 +echo " ✅ PM2 重启完成" + +echo "" +echo "==========================================" +echo " 部署完成: $(date '+%Y-%m-%d %H:%M:%S')" +echo "=========================================="