1.脚本功能说明
1.拉取代码:没项目时clone到本地,有项目时更新项目
2.maven打包
3.循环杀掉所有正在运行的项目相关的服务(注意执行文件不要起和项目相同的名字,会把正在执行的文件任务给杀掉)
4.删除原来的jar包和内容.复制打包jar到指定位置
5.加载外部配置文件启动项目,并输出当前日志到指定位置
2.运行前提
使用前需要安装git 和 maven
安装git
安装maven
3.创建执行文件
vi mysh.sh
给执行文件赋权
chmod 777 mysh.sh
4.脚本内容
copy脚本时注意修改路径等项目之间相关不同的内容
#!/bin/sh
#项目的git地址
git_path="仓库地址"
#本地代码位置代码路径
code_path="/xxx"
#项目名称
projectName="xxx"
env="master"
#如果项目文件夹不存在说明没有下载过改项目代码,需要检出该项目
if [ ! -d ${code_path}/${projectName} ];
then
echo ${projectName}"不存在,检出该项目"
cd $code_path
git clone "仓库地址"
else
echo ${projectName}"项目存在,更新代码"
cd ${code_path}/${projectName}
git reset --hard
git pull
fi
#删除项目
echo "删除项目下target"
rm -rf "${code_path}/${projectName}/${projectName}/target"
#maven 再打项目包
echo "maven打包${projectName}"
cd ${code_path}/${projectName}
mvn install -Dmaven.test.skip=true -Denv=$env -U
#如果打包出错直接退出
if [ $? -ne 0 ]; then
exit 1
fi
#关闭jar服务
echo "关闭jar服务"
#查询jar包服务进程ID,并杀掉该进程
pidList=$(ps aux | grep $projectName | grep -v grep | awk '{print $2}')
for pid in $pidList
do
kill -9 $pid
echo 'kill pid '$pid
done
echo "删除${projectName}.jar和${projectName}.log文件"
cd ${code_path}
rm -rf "${projectName}.jar"
rm -rf "${projectName}.log"
echo "复制打包的jar包到/home下"
cp "${code_path}/${projectName}/target/${projectName}.jar" ${code_path}
#启动jar包
echo "加载指定配置,运行jar包"
#加载外部配置文件也可以使用这种:java -jar xxx.jar --spring.config.location="路径+文件名"
nohup java -jar -Dspring.config.location="application.properties" ${code_path}/${projectName}.jar > ${code_path}/${projectName}.log 2>&1 &
echo "查看启动日志"
tail -f ${code_path}/${projectName}.log
4.运行脚本
# 同级目录下执行脚本
./mysh.sh