如何编写Java部署脚本支持回滚操作?

摘要:Java 部署脚本 Java Sprintboot jar 项目启动、停止脚本:https:www.cnblogs.comvipsoftp15952112.html SpringBoot 不同的环境,打不同的包名: https:
Java 部署脚本 Java Sprintboot jar 项目启动、停止脚本:https://www.cnblogs.com/vipsoft/p/15952112.html SpringBoot 不同的环境,打不同的包名: https://www.cnblogs.com/vipsoft/p/18577679 deploy.sh #!/bin/bash # 应用配置 APP_NAME="vipsoft-gateway" RUN_JAR_NAME="${APP_NAME}-1.0.23.jar" #start 命令对应的JAR包 NEW_JAR_NAME="${APP_NAME}-1.28.1.jar" #名称不要带日期,要标准可运行的 jar包 BACK_JAR_NAME="${APP_NAME}-1.0.23.jar1117" SERVICE_NAME="API1" # 使用说明 usage() { echo "使用说明:" echo " ./deploy.sh deploy <新jar包> # 部署新版本" echo " ./deploy.sh rollback <版本号> # 回滚到指定版本(格式: app-1.0.23.jar1117)" echo " ./deploy.sh stop # 停止应用" echo " ./deploy.sh start # 启动应用" echo " ./deploy.sh restart # 重启应用" echo " ./deploy.sh status # 查看状态" echo " ./deploy.sh logs [行数] # 查看日志(监控模式)" echo " ./deploy.sh backup # 备份当前版本" echo "" echo "示例:" echo " ./deploy.sh deploy app-1.28.1.jar" echo " ./deploy.sh rollback app-1.0.23.jar1117" } LOG_DIR="/mnt/logs/vipsoft" PID_FILE="./app.pid" TIMESTAMP=$(date +%Y%m%d_%H%M%S) JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC -DLOG_HOME=${LOG_DIR} -DServiceName=${SERVICE_NAME}" SPRING_OPTS="--spring.profiles.active=pro" # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 打印带颜色的消息 print_info() { echo -e "${GREEN}[INFO]${NC} $1" } print_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } # 部署新版本 deploy_jar() { local new_jar="$1" if [ ! -z "$1" ]; then NEW_JAR_NAME=$new_jar fi # 检查文件是否以 .jar 结尾 if [[ ! "$NEW_JAR_NAME" =~ \.jar$ ]]; then print_error "文件名必须以 .jar 结尾: ${NEW_JAR_NAME}" exit 1 fi if [ ! -f "$NEW_JAR_NAME" ]; then print_error "部署版本不存在: ${NEW_JAR_NAME}" exit 1 fi print_info "部署: ${NEW_JAR_NAME}" # 停止应用 stop # 替换jar包 if [ -f "$RUN_JAR_NAM
阅读全文