- 服务器安装git
- 生成git密钥
- 将公钥配置到git仓库
- 安装maven并配置环境变量
- spring项目配置好环境变量文件,修改application.yml和pom.xml文件
- 服务器克隆git仓库,并切换好分支
- 拉取最新代码
- 项目编译打包
- 关闭运行中的项目并备份
- 复制编译好的jar包文件到指定目录
- 启动项目。
#!/bin/sh
#git pull and maven install project and deploy project
#define project path
AppName=spring.jar
DATE=`date '+%Y%m%d-%H%M'`
ProPath=/data/server/
BuildPath=$ProPath/spring/target
BuildApp=$BuildPath/$AppName
DeployPath=/data/spring
DeployApp=$DeployPath/$AppName
BakApp=$DeployPath/bakFile/$AppName_$DATE
LogFile=$DeployPath/$AppName.log
#JVM参数
JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
#function
#start
function start()
{
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
if [ x"$PID" != x"" ]; then
echo "$AppName is running..."
else
nohup java -jar $JVM_OPTS target/$AppName > /dev/null 2>&1 &
echo "Start $AppName success..."
fi
}
#stop
function stop()
{
echo "Stop $AppName"
PID=""
query(){
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
echo "---$PID---"
}
query
if [ x"$PID" != x"" ]; then
kill -TERM $PID
echo "$AppName (pid:$PID) 关闭中..."
while [ x"$PID" != x"" ]
do
sleep 1
query
done
echo "--- $AppName 已关闭!!!---."
else
echo "--- $AppName 已关闭---."
fi
}
#restart
function restart()
{
stop
sleep 2
start
}
#check status
function status()
{
PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
if [ $PID != 0 ];then
echo "$AppName is running..."
else
echo "$AppName is not running..."
fi
}
#start deploy
#cd dir
echo "---1.进入项目目录---"
cd $ProPath
if [[ $? == 0 ]]
then
echo "---1.1进入项目目录成功---"
else
echo "####1.2进入项目目录失败,退出####"
exit 0
fi
#start git pull
echo "---2.拉取代码---"
git pull origin abc
if [[ $? == 0 ]]
then
echo "---2.1拉取代码成功---"
else
echo "####2.2拉取代码失败,退出####"
exit 0
fi
echo "---3.项目打包---"
mvn clean package -Dmaven.test.skip=true -P test
if [[ $? == 0 ]]
then
echo "---3.1项目打包成功---"
else
echo "####3.2项目打包失败,退出####"
exit 0
fi
echo "---4.关闭运行中的项目---"
stop
if [[ $? == 0 ]]
then
echo "---4.1关闭项目成功---"
else
echo "####4.2关闭项目失败,退出####"
exit 0
fi
echo "---5.备份原项目---"
mv $DeployApp $BakApp
if [[ $? == 0 ]]
then
echo "---5.1原项目备份成功---"
else
echo "####5.2原项目备份失败,退出####"
exit 0
fi
echo "---6.部署新项目---"
mv $BuildApp $DeployApp
if [[ $? == 0 ]]
then
echo "---6.1新项目部署成功---"
else
echo "####6.2新项目部署失败,退出####"
exit 0
fi
echo "---7.启动项目---"
nohup java -jar $DeployApp > $LogFile 2>&1 &
if [[ $? == 0 ]]
then
echo "---7.1新项目启动成功---"
else
echo "####7.2新项目启动失败,退出####"
exit 0
fi