55 lines
1.7 KiB
Bash
Executable File
55 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SOURCE_ROOT="${SOURCE_ROOT:-/opt/apps/linkedsign/source}"
|
|
RUNTIME_ROOT="${RUNTIME_ROOT:-/opt/apps/linkedsign}"
|
|
|
|
FRONTEND_SOURCE="$SOURCE_ROOT/frontend"
|
|
BACKEND_SOURCE="$SOURCE_ROOT/backend"
|
|
FRONTEND_RUNTIME="$RUNTIME_ROOT/frontend"
|
|
BACKEND_RUNTIME="$RUNTIME_ROOT/backend"
|
|
|
|
echo "[deploy] Building frontend from $FRONTEND_SOURCE"
|
|
cd "$FRONTEND_SOURCE"
|
|
npm ci
|
|
npm run build
|
|
|
|
echo "[deploy] Publishing frontend runtime to $FRONTEND_RUNTIME"
|
|
mkdir -p "$FRONTEND_RUNTIME"
|
|
shopt -s dotglob nullglob
|
|
for item in "$FRONTEND_RUNTIME"/*; do
|
|
base="$(basename "$item")"
|
|
if [[ "$base" != "dist" && "$base" != "server.js" ]]; then
|
|
rm -rf "$item"
|
|
fi
|
|
done
|
|
rm -rf "$FRONTEND_RUNTIME/dist"
|
|
cp -r dist "$FRONTEND_RUNTIME/"
|
|
cp server.js "$FRONTEND_RUNTIME/"
|
|
|
|
echo "[deploy] Publishing backend runtime to $BACKEND_RUNTIME"
|
|
mkdir -p "$BACKEND_RUNTIME"
|
|
for item in "$BACKEND_RUNTIME"/*; do
|
|
base="$(basename "$item")"
|
|
if [[ "$base" != ".env" ]]; then
|
|
rm -rf "$item"
|
|
fi
|
|
done
|
|
cp -a "$BACKEND_SOURCE"/. "$BACKEND_RUNTIME/"
|
|
rm -f "$BACKEND_RUNTIME/.env.example"
|
|
shopt -u dotglob nullglob
|
|
|
|
cd "$BACKEND_RUNTIME"
|
|
npm ci --omit=dev
|
|
|
|
echo "[deploy] Removing markdown files from production runtime"
|
|
find "$RUNTIME_ROOT" -type f -iname '*.md' -delete
|
|
|
|
echo "[deploy] Re-applying hardened permissions"
|
|
chmod 750 "$RUNTIME_ROOT" "$RUNTIME_ROOT/backend" "$RUNTIME_ROOT/storage" "$RUNTIME_ROOT/logs" "$RUNTIME_ROOT/android" "$RUNTIME_ROOT/android/apk" 2>/dev/null || true
|
|
chmod 640 "$BACKEND_RUNTIME/.env" 2>/dev/null || true
|
|
|
|
echo "[deploy] Done. Restart services manually:"
|
|
echo " sudo systemctl restart linkedsign-frontend"
|
|
echo " sudo systemctl restart linkedsign-backend"
|