之前 deploy.sh 只打包了 backend/ 目录,但前端构建输出在 client/build/,从未被复制到 backend/static/,导致部署的 始终是旧版前端。现在在 build 后自动复制。
44 lines
1.3 KiB
Bash
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 ===" |