finance-tools/scripts/deploy.sh

47 lines
1.5 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
set -euo pipefail
REMOTE="${REMOTE:-daniel@10.0.0.5}"
APP_DIR="${APP_DIR:-/opt/investor-rpg}"
SERVICE_NAME="${SERVICE_NAME:-investor-rpg}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
LOCAL_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
CONTENT_DIR="$(cd "${LOCAL_DIR}/.." && pwd)/content/raw/patterns"
STAMP="$(date +%Y%m%d-%H%M%S)"
echo "部署到 ${REMOTE}:${APP_DIR}"
ssh "${REMOTE}" "mkdir -p '${APP_DIR}/backups'; \
if [ -f '${APP_DIR}/data.db' ]; then sqlite3 '${APP_DIR}/data.db' \".backup '${APP_DIR}/backups/data-${STAMP}.db'\" && chmod 600 '${APP_DIR}/backups/data-${STAMP}.db'; fi; \
find '${APP_DIR}/backups' -type f -name 'data-*.db' -mtime +14 -delete 2>/dev/null || true"
rsync -az --delete \
--exclude '.env' \
--exclude 'data.db' \
--exclude 'data.db-*' \
--exclude 'config/ai/' \
--exclude 'node_modules/' \
--exclude 'dist/' \
--exclude 'backups/' \
--exclude '*.log' \
--exclude '.DS_Store' \
"${LOCAL_DIR}/" "${REMOTE}:${APP_DIR}/"
if [[ -d "${CONTENT_DIR}" ]]; then
ssh "${REMOTE}" "mkdir -p '/opt/content/raw/patterns'"
rsync -az --delete "${CONTENT_DIR}/" "${REMOTE}:/opt/content/raw/patterns/"
fi
ssh "${REMOTE}" "set -e; \
cd '${APP_DIR}'; \
npm ci; \
npm run build; \
find dist -type d -exec chmod 755 {} +; \
find dist -type f -exec chmod 644 {} +; \
sudo -n systemctl restart '${SERVICE_NAME}'; \
sudo -n nginx -t; \
curl -fsS --retry 10 --retry-connrefused --retry-delay 2 http://127.0.0.1:3000/api/health"
echo
echo "部署完成http://${REMOTE#*@}/"