Linux服务器shell脚本自动部署java项目

  1. 服务器安装git
  2. 生成git密钥
  3. 将公钥配置到git仓库
  4. 安装maven并配置环境变量
  5. spring项目配置好环境变量文件,修改application.yml和pom.xml文件
  6. 服务器克隆git仓库,并切换好分支
  7. 拉取最新代码
  8. 项目编译打包
  9. 关闭运行中的项目并备份
  10. 复制编译好的jar包文件到指定目录
  11. 启动项目。

#!/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

你可能感兴趣的:(Git,Java,springboot)