From 1b7f6a5b6be224388fde91c34ad26e25a6b8feb3 Mon Sep 17 00:00:00 2001 From: selfrelease Date: Thu, 25 Jun 2026 20:23:23 +0800 Subject: [PATCH] =?UTF-8?q?deploy:=202026-06-25=2020:23=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=83=A8=E7=BD=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy.sh | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/deploy.sh b/deploy.sh index fbfbb3d..674dfda 100755 --- a/deploy.sh +++ b/deploy.sh @@ -14,7 +14,7 @@ set -euo pipefail -SERVER="h2agent" +SERVER="${SERVER:-h2agent}" REMOTE_DIR="/opt/govai" DOMAIN="gov.opc8ai.com" PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)" @@ -88,8 +88,9 @@ build_local() { log "编译 Next.js 前端..." cd "$PROJECT_DIR/apps/web" + rm -rf .next NEXT_PUBLIC_API_URL="http://localhost:8080" npm run build - log "前端编译完成" + log "前端编译完成 (.next: $(du -sh .next | cut -f1))" cd "$PROJECT_DIR" } @@ -101,17 +102,17 @@ upload() { log "停止服务以释放文件锁..." ssh $SERVER "systemctl stop govai-api govai-web 2>/dev/null || true" - log "上传后端二进制..." - scp "$PROJECT_DIR/dist/server" $SERVER:$REMOTE_DIR/server/server + log "上传后端二进制 (gzip 流)..." + gzip -c "$PROJECT_DIR/dist/server" | ssh $SERVER "gunzip -c > $REMOTE_DIR/server/server.new && mv -f $REMOTE_DIR/server/server.new $REMOTE_DIR/server/server && chmod +x $REMOTE_DIR/server/server" log "上传迁移文件..." rsync -az --delete "$PROJECT_DIR/server/migrations/" $SERVER:$REMOTE_DIR/migrations/ - log "上传前端构建产物..." - rsync -az --delete "$PROJECT_DIR/apps/web/.next/" $SERVER:$REMOTE_DIR/web/.next/ - rsync -az "$PROJECT_DIR/apps/web/public/" $SERVER:$REMOTE_DIR/web/public/ 2>/dev/null || true - scp "$PROJECT_DIR/apps/web/package.json" $SERVER:$REMOTE_DIR/web/ - scp "$PROJECT_DIR/apps/web/next.config.ts" $SERVER:$REMOTE_DIR/web/ + log "上传前端构建产物 (tar 压缩流, 排除 dev/cache)..." + tar czf - -C "$PROJECT_DIR/apps/web" \ + --exclude='.next/dev' --exclude='.next/cache' \ + .next public package.json next.config.ts \ + | ssh $SERVER "rm -rf $REMOTE_DIR/web/.next && tar xzf - -C $REMOTE_DIR/web" log "上传完成" }