78 lines
2.3 KiB
Bash
78 lines
2.3 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
|
|||
|
|
# 设置变量
|
|||
|
|
REPO_URL="http://47.121.181.112:3000/wonder/stardew-valley.git"
|
|||
|
|
PROJECT_DIR="/opt/stardew-valley"
|
|||
|
|
MAVEN_CMD="mvn clean package -Dmaven.test.skip=true" # 跳过测试(编译 & 执行都跳过)
|
|||
|
|
APP_NAME="stardew-valley" # PM2 中的应用名称
|
|||
|
|
JAR_FILE=""
|
|||
|
|
DEPLOY_DIR="/opt/stardew-valley/target" # 你可以指定部署目录,也可以直接使用 target 目录
|
|||
|
|
|
|||
|
|
# 检查依赖是否安装
|
|||
|
|
if ! command -v git &> /dev/null; then
|
|||
|
|
echo "错误:Git 未安装,请先安装 Git。"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if ! command -v mvn &> /dev/null; then
|
|||
|
|
echo "错误:Maven 未安装,请先安装 Maven。"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if ! command -v pm2 &> /dev/null; then
|
|||
|
|
echo "错误:PM2 未安装,请先安装 PM2。"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 克隆或拉取代码
|
|||
|
|
echo "正在克隆或拉取仓库 $REPO_URL 到 $PROJECT_DIR ..."
|
|||
|
|
if [ -d "$PROJECT_DIR" ]; then
|
|||
|
|
echo "目录 $PROJECT_DIR 已存在,正在拉取最新代码..."
|
|||
|
|
cd "$PROJECT_DIR" || { echo "无法进入目录 $PROJECT_DIR"; exit 1; }
|
|||
|
|
git pull origin main
|
|||
|
|
else
|
|||
|
|
git clone "$REPO_URL" "$PROJECT_DIR"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 进入项目目录
|
|||
|
|
cd "$PROJECT_DIR" || { echo "无法进入目录 $PROJECT_DIR"; exit 1; }
|
|||
|
|
|
|||
|
|
# 执行 Maven 构建(跳过测试)
|
|||
|
|
echo "正在执行 Maven 构建(跳过测试)..."
|
|||
|
|
$MAVEN_CMD
|
|||
|
|
|
|||
|
|
# 检查构建是否成功
|
|||
|
|
if [ $? -ne 0 ]; then
|
|||
|
|
echo "Maven 构建失败,退出脚本。"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 查找生成的 JAR 文件
|
|||
|
|
JAR_FILE=$(find "$PROJECT_DIR/target" -type f -name "*.jar" | head -n 1)
|
|||
|
|
|
|||
|
|
if [ -z "$JAR_FILE" ]; then
|
|||
|
|
echo "未找到 JAR 文件,构建可能失败或项目类型不识别。"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo "找到 JAR 文件: $JAR_FILE"
|
|||
|
|
|
|||
|
|
# 部署文件(可选,也可直接在 target 目录下启动)
|
|||
|
|
# 可以选择是否拷贝到其他目录(比如 /opt/stardew-valley/app/)
|
|||
|
|
# 如果你不需要部署到其他目录,可以直接使用 target 目录
|
|||
|
|
|
|||
|
|
echo "部署 JAR 文件到 $DEPLOY_DIR ..."
|
|||
|
|
# 如果你不需要复制,可以去掉这一行
|
|||
|
|
# cp "$JAR_FILE" "$DEPLOY_DIR/"
|
|||
|
|
|
|||
|
|
# 删除旧的 PM2 进程
|
|||
|
|
echo "删除 PM2 中的旧进程 $APP_NAME..."
|
|||
|
|
pm2 delete "$APP_NAME" > /dev/null 2>&1
|
|||
|
|
|
|||
|
|
# 启动 Java 应用
|
|||
|
|
echo "正在启动 Java 应用..."
|
|||
|
|
pm2 start "java -jar $JAR_FILE" --no-daemon --name "$APP_NAME"
|
|||
|
|
|
|||
|
|
# 提示信息
|
|||
|
|
echo "部署和启动完成!"
|