如何编写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
