Shell按日期备份、Git拉取代码打包部署
#!/bin/bash # jar文件位置 jarPath="/data/api" # 拉取源代码存放的位置 originCode="/data/api/originCode" # 备份jar文件位置 backPath="/data/api/back" # 按时间区分 data=`date +"%Y-%m-%d-%H:%M:%S"` # 项目端口 port=8081 echo "=====================创建备份文件路径============" if [ ! -d ${backPath} ];then mkdir -p ${backPath} else echo "备份文件路径已存在" fi; echo "=====================备份jar=====================" cd ${jarPath} mv api-0.1.jar ${backPath}/api-0.1.${data}.jar echo "=====================备份jar成功=================" echo "=====================创建源代码目录,如果不存在===" if [ ! -d ${originCode} ];then mkdir -p ${originCode} else echo "源代码目录已存在" fi; ## 从git拉取代码 echo "=====================拉取新代码==================" cd ${originCode} git pull echo "=====================拉取成功=====================" ## 构筑项目 echo "=====================打包中=======================" cd ${originCode} mvn clean install -Dmaven.test.skip=true echo "=====================打包完成=====================" echo "=====================移动jar包到jarPath目录下=====" cd ${originCode}/api/target mv api-0.1.jar ${jarPath} echo "=====================停止项目,准备启动...=========" cd ${jarPath}
#根据端口号查询对应的pid pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }'); #杀掉对应的进程,如果pid不存在,则不执行 if [ -n "$pid" ]; then kill -9 $pid; fi sleep 1s echo "=====================启动项目=====================" java -jar .jar api-0.1.jar >/opt/logs/api/catalina.out 2>&1 &