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 "上传完成" }