Files
GarminHealthLab/deploy/deploy.sh
ericwyuan 317cb4996d fix(deploy): 构建前端后复制到 backend/static/,避免部署旧版
之前 deploy.sh 只打包了 backend/ 目录,但前端构建输出在
client/build/,从未被复制到 backend/static/,导致部署的
始终是旧版前端。现在在 build 后自动复制。
2026-09-01 19:00:42 +08:00

44 lines
1.3 KiB
Bash

#!/bin/sh
# Deploy the latest local code to NAS.
# Usage: sh deploy/deploy.sh
# Prerequisites: client has been built (`npm run build` in client/)
APP="$(cd "$(dirname "$0")/.." && pwd)"
NAS_HOST="${1:-ericwyuan@192.168.50.64}"
NAS_PORT="${2:-2222}"
NAS_PATH="/volume1/web/garmin-health-lab"
NAS_PASS="iLoveJava5"
set -e
echo "=== Building frontend ==="
cd "$APP/client"
npm run build 2>&1 | tail -3
echo "=== Copying build to backend/static/ ==="
rm -rf "$APP/backend/static"
cp -r "$APP/client/build" "$APP/backend/static"
echo "=== Syncing files to NAS (excluding .venv) ==="
cd "$APP"
tar cz \
--exclude='backend/.venv' \
--exclude='backend/__pycache__' \
--exclude='backend/*.pyc' \
--exclude='node_modules' \
-f /tmp/garmin_deploy.tar.gz \
backend/ deploy/
sshpass -p "$NAS_PASS" scp -P "$NAS_PORT" -o StrictHostKeyChecking=no \
/tmp/garmin_deploy.tar.gz "${NAS_HOST}:/tmp/garmin_deploy.tar.gz"
sshpass -p "$NAS_PASS" ssh -p "$NAS_PORT" -o StrictHostKeyChecking=no \
"$NAS_HOST" "echo '$NAS_PASS' | sudo -S tar xzf /tmp/garmin_deploy.tar.gz -C $NAS_PATH/ && rm /tmp/garmin_deploy.tar.gz"
rm -f /tmp/garmin_deploy.tar.gz
echo "=== Restarting service ==="
sshpass -p "$NAS_PASS" ssh -p "$NAS_PORT" -o StrictHostKeyChecking=no \
"$NAS_HOST" "echo '$NAS_PASS' | sudo -S $NAS_PATH/deploy/start.sh 2>&1"
echo "=== Done ==="