前段时间用springboot做项目后,每次重新发布都好麻烦, 所以写了个脚本来配合jenkins 发布;
#!/bin/bash
APP_NAME=application.jar
function check {
local PID=0
if [ -e tpid ] ;then
PID=$(cat tpid)
# while read TMPID; do PID=$TMPID ;done < tpid
fi
# echo "PID:$PID"
if ps -p $PID > /dev/null ;then
echo $PID
else
echo 0
fi
}
function isRun {
local PID=$(check)
if [ $PID -ne 0 ]; then
echo "application is running..."
else
echo "application is not running..."
fi
}
function start {
if [ ! -e $APP_NAME ]; then
echo "$APP_NAME is not found!"
return 0
fi
local PID=$(check)
if [ $PID -ne 0 ]; then
echo "$PID $APP_NAME was running..."
return 0
fi
local argumet=""
if [ -e application.properties ] ;then
argumet="$argumet --spring.config.location=application.properties"
fi
nohup java -jar $APP_NAME $argumet > log.out 2>&1 &
echo $! > tpid
PID=$(cat tpid)
echo $PID Start Success!
}
function stop {
local PID=$(check)
if [ $PID -ne 0 ]; then
echo -n "Stop Process..."
kill -15 $PID
num=0
while [[ num -le 5 ]]; do
# echo $num
echo -n "."
sleep 1
PID=$(check)
if [ $PID -eq 0 ]; then
echo "Success!"
return 0
fi
num=$[ $num + 1 ]
done
PID=$(check)
if [ $PID -ne 0 ]; then
kill -9 $PID
echo ""
echo "Kill Process!"
else
echo "Success!"
fi
return 0
fi
return 1
}
function restart {
stop
start
}
function deploy {
fd=$(date +"%Y%m%d%H%M%S")
fileCount=`ls ./target/ | grep .jar$ | wc -l`
if [ $fileCount -eq 1 ]; then
fileName=`ls ./target/ | grep .jar$`
newName="$fileName.$fd"
mv ./target/$fileName ./target/$newName
if [ -e ./$APP_NAME ]; then
rm -rf ./$APP_NAME
fi
ln -s ./target/$newName ./$APP_NAME
echo "deploy success..."
restart
else
echo "Can not be deploy, jar file $fileCount"
return 1
fi
}
case $1 in
"start" ) start;;
"stop" ) stop;;
"check" ) isRun;;
"restart" ) restart;;
"deploy" ) deploy;;
* ) echo "$0 start"
echo "$0 stop"
echo "$0 check"
echo "$0 restart"
echo "$0 deploy"
esac
exit 0