Linux下基于Maven的自动化打包发布项目

来源:互联网 发布:淘宝v达人 编辑:程序博客网 时间:2024/06/10 02:27

基于Maven的自动化打包发布项目


1、配置项目文件 prolist.config

svn://10.1.23.215/Hive/HiveUDFIK hive-ik jar 10.130.2.245 /opt/bin/UDFsvn://10.1.23.215/Tools/WordBank WordBank war 10.130.3.211 /opt/tomcat/webappssvn://10.1.23.215/REST/RestMysqlR restweb war 10.130.3.211 /opt/tomcat/webapps

参数分别为: svn的路径,打包的名称,打包的方式jar或者war,服务器地址,服务器的路径,以空格分隔。


2、调度脚本 runAutoPak.sh

#!/bin/bash##owner:dp#cronTime:30 1 * * *#author:root#mail:wuke@staff.hexun.com#commitDate:2016-02-25#inputData:prolist.config#outputData: project.war#private:#cronDir:/opt/autopackage/bin#cronfile:runAutoPak.sh#cronlogDir:/opt/autopackage/bin/runAutoPak.log#describe:访问路径#note:# 思路简述:#  # 参数说明:# prolist.config# svn的路径,打包的名称,打包的方式jar或者war,服务器地址,服务器的路径,以空格分隔。while read mylinedo svnurl=`echo $myline  | awk '{print $1}'` fileName=`echo $myline  | awk '{print $2}'` fileType=`echo $myline  | awk '{print $3}'` serverurl=`echo $myline  | awk '{print $4}'` serverdir=`echo $myline  | awk '{print $5}'` echo $svnurl $fileName $fileType $serverurl $serverdir  /opt/autopackage/bin/autopackage.sh $svnurl $fileName $fileType $serverurl $serverdir    waitdone < /opt/autopackage/bin/prolist.configwaitif [ "$fileType" =  "war" ]; then  echo "release war"nohup /opt/autopackage/bin/restartTomcat.sh  > /opt/autopackage/bin/res.log 2>&1 $echo "vaildate server"nohup /opt/autopackage/bin/vailTomcat.sh  > /opt/autopackage/bin/vail.log 2>&1 $else  echo "release jar"fi 



循环取配置文件里的项目参数来打包


3、打包脚本 autopackage.sh

#!/bin/bash#source /etc/profiletoday=`date --date='0 days ago' +%Y-%m-%d`cd /opt/autopackage/svncodeprdName=${1##*/}rm -rf /opt/autopackage/svncode/$prdNamesvn co $1cd $prdNamemvn clean packagecd targetssh -t -p 22 root@$4 "rm -rf $5/$2.$3.*.bakmv $5/$2.$3  $5/$2.$3.$today.bakrm -rf $5/$2" < /dev/nullscp $2.$3  $4:$5


4、打包上传后重启服务器  restartTomcat.sh

#!/bin/bash#ssh -t -p 22 root@10.130.3.211 "/opt/tomcat/bin/restart.sh"


调用远程的重启脚本 restart.sh

#!/bin/bash  #source /etc/profile  master=`ps -ef | grep Bootstrap | grep tomcat | awk '{print $2}'`  echo $mastertoday=`date --date='0 days ago' "+%Y-%m-%d"`todayTime=`date --date='0 days ago' "+%Y%m%d%H%M%S"`  if [ "$master" !=  "" ]; then          echo "Tomcat Master is restart!"          kill -9 $master        mv /opt/tomcat/logs/localhost.$today.log /opt/tomcat/logs/localhost.$todayTime.log/opt/tomcat/bin/startup.sh  else          /opt/tomcat/bin/startup.shfi 


5、验证发布的项目是否正常 vailTomcat.sh

#!/bin/bash#ssh -t -p 22 root@10.130.3.211 "/opt/tomcat/bin/validateTomcat.sh"

调用远程服务器的验证脚本 validateTomcat.sh

#!/bin/bash#today=`date --date='0 days ago' +%Y-%m-%d`msg=`cat /opt/tomcat/logs/localhost.$today.log | grep java.lang | grep Exception`if [ "$msg" !=  "" ]; then          echo "recovery!"   cd /opt/tomcat/webappsrev=`ls | grep $today | grep bak`i=1  while((1==1))  do          split=`echo $rev|cut -d " " -f$i`          if [ "$split" != "" ]          then                  ((i++))                  echo $split prdName=${split%war*}warecho $prdNamerm -rf $prdNamemv $split $prdName        else                  break          fi  done wait/opt/tomcat/bin/restart.shelse          echo "ok"  fi  

如果项目发布失败则恢复到原来的版本


6、crontab 定时调度脚本

45 13 * * * /opt/autopackage/bin/runAutoPak.sh > /opt/autopackage/bin/runAutoPak.log 2>&1


2 0