#!/bin/bash set -e # ==================== 配置 ==================== SERVER_HOST="172.17.16.14" SERVER_USER="root" SERVER_PASS="JCSS@2025!@#$" UPLOAD_DIR="/home/user/test_jar" RESTART_SCRIPT="restart.sh" JAR_NAME="urbanops-server.jar" PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)" JAR_PATH="$PROJECT_DIR/urbanops-server/target/$JAR_NAME" # ==================== 函数 ==================== check_sshpass() { if ! command -v sshpass &> /dev/null; then echo "[check] sshpass 未安装,尝试安装..." if command -v brew &> /dev/null; then brew install hudochenkov/sshpass/sshpass else echo "[ERROR] 请手动安装 sshpass: brew install hudochenkov/sshpass/sshpass" exit 1 fi fi } build() { echo "[build] 开始 Maven 打包(跳过测试)..." cd "$PROJECT_DIR" mvn clean package -DskipTests if [ -f "$JAR_PATH" ]; then echo "[build] 打包完成: $JAR_PATH ($(du -sh "$JAR_PATH" | cut -f1))" else echo "[ERROR] 打包失败,未找到 $JAR_PATH" exit 1 fi } upload() { echo "[upload] 上传 JAR 到 $SERVER_HOST:$UPLOAD_DIR/ ..." sshpass -p "$SERVER_PASS" scp -o StrictHostKeyChecking=no "$JAR_PATH" "$SERVER_USER@$SERVER_HOST:$UPLOAD_DIR/" echo "[upload] 上传完成" } restart() { echo "[restart] 调用远程重启脚本..." sshpass -p "$SERVER_PASS" ssh -o StrictHostKeyChecking=no "$SERVER_USER@$SERVER_HOST" \ "cd $UPLOAD_DIR && chmod +x $RESTART_SCRIPT && ./$RESTART_SCRIPT" echo "[restart] 远程重启完成" } # ==================== 主流程 ==================== echo "========================================" echo " UrbanOps 测试环境部署" echo " 目标: $SERVER_USER@$SERVER_HOST:$UPLOAD_DIR" echo "========================================" check_sshpass build upload restart echo "" echo "========================================" echo " 部署完成" echo "========================================"