- Prerequire: you have to install windows powershell first for windows SSH function.
- Windows server
For example, you had a xxxx.jar. package, your purpose is to generate a script to depoly it automatically.
you can refer to following example:
@echo off
echo Kill the original application process
taskkill /f /im re_application.exe
echo copy
copy D:\publish\jar\re-prod\ruleEngine.jar D:\publish\jar\re-prod\bak\ruleEngine%Date:~0,4%%Date:~5,2%%Date:~8,2%%Time:~0,2%%Time:~3,2%%Time:~6,2%.jar
copy D:\publish\jar\re-prod\ruleEngine.jar D:\publish\jar\re-prod\ruleEngineNew.jar
echo start application
cd D:\publish\jar\re-prod\
D:
re_application.exe -Dserver.port=7001 -Xms512m -Xmx1024m -jar -Dfile.encoding=UTF-8 ruleEngineNew.jar --spring.profiles.active=db-uat,dev,auth,redis-uat
pause
Note that, you must copy a new and rename java.exe to re_applicaiton.exe from jdk folder "D:\Program Files\Java\jdk1.8.0_251\bin". what if you are using environment, please pay attention to "%JAVA_HOME%" is only used in windows server.
Linux Service
echo "启动开始"
# 设置JAVA环境变量
export JAVA_HOME PATH CLASSPATH
JAVA_HOME=/alldev/jdk/jdk1.8.0_161
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
# 项目jar名称
PROJECT_NAME=whspace
# 项目目录(远程部署目录)
project_path=/alldev/Project/wh-dev
# 项目备份目录
PROJECT_BACK_PATH=/alldev/Project/wh-devback/
DIR=$project_path
JARFILE=${PROJECT_NAME}.jar
# 创建项目目录
if [ ! -d $DIR ];then
mkdir -p $DIR
fi
# 及文件名称
current_date=`date "+%Y-%m-%d-%H:%M:%S"`
BACK_PROJECT_NAME=${PROJECT_NAME}_$current_date.jar
# 创建备份目录
if [ ! -d $PROJECT_BACK_PATH ];then
mkdir -p $PROJECT_BACK_PATH
fi
# 复制新的JAR包到备份目录
cp $DIR/$JARFILE $PROJECT_BACK_PATH/$BACK_PROJECT_NAME
# 进入到发布目录
cd $DIR
# 杀进程
ps -ef |grep $JARFILE | grep -v grep |awk '{print $2}'|xargs kill -9
# 启动
java -Dserver.port=6001 -Xms512m -Xmx1024m -jar $JARFILE --spring.profiles.active=db,dev,auth,redis&
echo "启动完成"
At the end, for Jenkins configuation is as below:
linux :
2. Windows
folder structure of start.bat as below: