Files
my-mom-system/deploy/deploy-erp-frontend.sh
panchengyong 951f49cb17 feat: 添加部署脚本、Maven Wrapper 和 mom-frontend-vue2 项目
- deploy/: 后端、ERP前端、MOM前端部署脚本
- mom-backend: Maven Wrapper 支持无全局 Maven 构建
- mom-frontend-vue2: MES 管理前端 Vue2 项目

Made-with: Cursor
2026-03-14 09:02:20 +08:00

73 lines
3.3 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.
#!/bin/bash
# =============================================================================
# erp-frontend-vue 前端部署脚本
# 用法:在项目根目录 mom-system-2026/ 下执行 bash deploy/deploy-erp-frontend.sh
# =============================================================================
set -e
# ── 配置 ─────────────────────────────────────────────────────────────────────
SERVER_USER="root"
SERVER_HOST="118.31.75.148"
SERVER_PORT=22
REMOTE_DIR="/www/wwwroot/mymom.suzhouyuqi.com"
BACKUP_DIR="${REMOTE_DIR}/backup"
KEEP_BACKUPS=5
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
FRONTEND_DIR="${PROJECT_ROOT}/erp-frontend-vue"
DIST_DIR="${FRONTEND_DIR}/dist"
SSH="ssh -p ${SERVER_PORT} ${SERVER_USER}@${SERVER_HOST}"
export PATH="$HOME/.nvm/versions/node/v22.22.0/bin:$PATH"
# ── 工具函数 ──────────────────────────────────────────────────────────────────
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"; }
info() { log "INFO $*"; }
ok() { log "OK $*"; }
err() { log "ERROR $*" >&2; exit 1; }
# ── 步骤 1本地构建 ───────────────────────────────────────────────────────────
info "Step 1/3 — Build erp-frontend-vue (production)"
cd "${FRONTEND_DIR}"
npm run build
[ -d "${DIST_DIR}" ] || err "构建产物目录不存在: ${DIST_DIR}"
ok "Build OK → ${DIST_DIR}"
# ── 步骤 2远程备份旧版本 ─────────────────────────────────────────────────────
info "Step 2/3 — Backup current deployment on remote server"
TIMESTAMP=$(date '+%Y%m%d_%H%M%S')
$SSH bash -s << EOF
set -e
mkdir -p "${BACKUP_DIR}"
# 将当前站点目录(排除 backup/ 自身)打包为 tar.gz
cd "${REMOTE_DIR}"
FILES=\$(ls | grep -v '^backup$' || true)
if [ -n "\$FILES" ]; then
tar -czf "${BACKUP_DIR}/dist_${TIMESTAMP}.tar.gz" \$FILES
echo " Backed up → ${BACKUP_DIR}/dist_${TIMESTAMP}.tar.gz"
else
echo " No existing files to backup (first deploy)"
fi
# 只保留最近 ${KEEP_BACKUPS} 个备份
cd "${BACKUP_DIR}"
ls -t | tail -n +$((${KEEP_BACKUPS} + 1)) | xargs -r rm -f
echo " Backup dir now contains: \$(ls | wc -l) file(s)"
EOF
ok "Backup OK"
# ── 步骤 3上传新版本 ─────────────────────────────────────────────────────────
info "Step 3/3 — Upload dist to remote (rsync)"
rsync -avz --delete \
--exclude='backup' \
-e "ssh -p ${SERVER_PORT}" \
"${DIST_DIR}/" \
"${SERVER_USER}@${SERVER_HOST}:${REMOTE_DIR}/"
ok "Upload OK"
info "============================================"
info "erp-frontend-vue 部署完成!"
info "访问地址http://${SERVER_HOST} 或 https://mymom.suzhouyuqi.com"
info "============================================"