Files
sionrui/script/deploy/deploy-all.sh
sion123 145f6820b6
Some checks failed
Build and Deploy / deploy (push) Has been cancelled
chore(deploy): 设置 JAVA_HOME 并验证 Java 版本
在部署脚本中添加 JAVA_HOME 环境变量配置,明确指定使用 JDK 17.0.8,并添加版本验证命令输出到调试日志,确保构建环境的一致性。
2026-03-21 23:16:46 +08:00

108 lines
3.2 KiB
Bash
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
# ============================================
# 增强版全量部署脚本 - 带有深度日志追踪与权限优化
# ============================================
set -e
# ==================== 配置区 ====================
PROJECT_DIR="/www/wwwroot/sionrui"
BACKEND_DIR="/www/wwwroot/yudao-server"
FRONTEND_DIR="/www/wwwroot/muyetools.cn"
BACKEND_JAR_NAME="yudao-server.jar"
BACKEND_PORT=9900
BUILD_LOG="/tmp/gitea_build_$(date +%Y%m%d).log"
# 关键:强制指定 Maven 仓库到 www 用户有权访问的地方
MAVEN_REPO="$PROJECT_DIR/.m2_repo"
mkdir -p $MAVEN_REPO && chmod -R 777 $MAVEN_REPO
# 限制 Maven 内存,防止隐性 OOM
export MAVEN_OPTS="-Xms256m -Xmx512m"
export NODE_OPTIONS="--max-old-space-size=1024"
export JAVA_HOME="/www/server/java/jdk-17.0.8"
export PATH=$JAVA_HOME/bin:$PATH
# 验证一下,确保输出的是 17.0.8
java -version >> /tmp/mvn_debug.log 2>&1
# ==================== 工具函数 ====================
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a $BUILD_LOG
}
# 清理残留进程
cleanup_old_processes() {
log "检查并清理旧的构建/运行进程..."
# 杀掉之前的构建进程(如果有)
pkill -f "maven" || true
pkill -f "pnpm" || true
}
# ==================== 核心逻辑 ====================
deploy_backend() {
log "========== [后端] 开始部署 =========="
cd $PROJECT_DIR
log "1. 拉取代码..."
git fetch origin
git reset --hard origin/main
log "2. 开始编译 (日志记录在: $BUILD_LOG)..."
# 移除 -q增加 -U (强制更新),显式指定仓库
# 使用 2>&1 将错误也抓取到日志中
mvn clean package -DskipTests -pl yudao-server -am -Dmaven.repo.local=$MAVEN_REPO >> $BUILD_LOG 2>&1
if [ $? -ne 0 ]; then
log "❌ 后端编译失败!请查看 $BUILD_LOG"
exit 1
fi
log "3. 准备启动 JAR..."
mkdir -p $BACKEND_DIR/backup
[ -f "$BACKEND_DIR/$BACKEND_JAR_NAME" ] && cp $BACKEND_DIR/$BACKEND_JAR_NAME $BACKEND_DIR/backup/server-$(date +%H%M).jar
cp $PROJECT_DIR/yudao-server/target/$BACKEND_JAR_NAME $BACKEND_DIR/
log "4. 重启服务..."
PID=$(ps -ef | grep $BACKEND_DIR/$BACKEND_JAR_NAME | grep -v "grep" | awk '{print $2}')
[ -z "$PID" ] || kill -9 $PID
cd $BACKEND_DIR
nohup java -Xms512m -Xmx512m -jar $BACKEND_JAR_NAME --spring.profiles.active=prod > $BACKEND_DIR/logs/console.log 2>&1 &
log "✅ 后端部署指令已发出,请稍后检查端口 $BACKEND_PORT"
}
deploy_frontend() {
log "========== [前端] 开始部署 =========="
cd $PROJECT_DIR/frontend
log "1. 安装依赖 (pnpm)..."
pnpm install >> $BUILD_LOG 2>&1
log "2. 前端构建..."
pnpm build >> $BUILD_LOG 2>&1
log "3. 发布文件..."
rm -rf $FRONTEND_DIR/*
cp -r $PROJECT_DIR/frontend/app/web-gold/dist/* $FRONTEND_DIR/
log "✅ 前端部署完成"
}
# ==================== 主入口 ====================
cleanup_old_processes
case "$1" in
backend-only) deploy_backend ;;
frontend-only) deploy_frontend ;;
*)
deploy_backend
deploy_frontend
;;
esac
log "🚀 所有流程执行完毕!"