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

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

1、配置项目文件 prolist.config

svn://10.1.23.215/Hive/HiveUDFIK hive-ik jar 10.130.2.245 /opt/bin/UDF

svn://10.1.23.215/Tools/WordBank WordBank war 10.130.3.211 /opt/tomcat/webapps

svn://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 myline

do

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

wait

done < /opt/autopackage/bin/prolist.config

wait

if [ "$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/profile

today=`date --date='0 days ago' +%Y-%m-%d`

cd /opt/autopackage/svncode

prdName=${1##*/}

rm -rf /opt/autopackage/svncode/$prdName

svn co $1

cd $prdName

mvn clean package

cd target

ssh -t -p 22 root@$4 "

rm -rf $5/$2.$3.*.bak

mv $5/$2.$3 $5/$2.$3.$today.bak

rm -rf $5/$2

" < /dev/null

scp $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 $master

today=`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.sh

fi

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/webapps

rev=`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*}war

echo $prdName

rm -rf $prdName

mv $split $prdName

else

break

fi

done

wait

/opt/tomcat/bin/restart.sh

else

echo "ok"

fi

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

6、crontab 定时调度脚本

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值