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
linux maven 发布项目,Linux下基于Maven的自动化打包发布项目相关推荐
- React Native项目自动化打包发布
今天这篇文章的目的是在rn项目的构建,并不会涉及到rn框架或者使用的讲解,说起构建,特别是前端构建大家应该很快会想到webpack.Grunt. Gulp等.而这些工具在rn项目中就显得有些鸡肋.所以 ...
- 发布nuget包的正确姿势---cicd自动打包发布
最轻便的发布nuget包方式,方便cicd自动打包发布nuget包 首先新建项目 项目名随便取,这里就叫它GuiH.ClassLibrary 默认即可,需要改目标版本时,等创建好再改 项目创建好了 随 ...
- iOS自动化打包发布之fastlane 实现 发布AppStore 蒲公英
iOS自动化打包发布之fastlane 实现 fastlane官方文档 前提插件配置 首先要安装xcode-select 然后安装fastlane sudo gem install fastlane ...
- Maven实战(四)——基于Maven的持续集成实践
相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订,它清晰地解释了持续集成的概念,并总结了 ...
- ssm项目模板_基于SSM的论坛系统发布可商业、学习、毕设
基于SSM的论坛系统发布,界面非常的漂亮,功能很齐全,非常的6-- SSM旅游论坛是一款基于JAVA企业级平台研发的社交管理系统,是一个可以用来搭建门户.群组.论坛和问答的社区系统,是将SNS社会化网 ...
- eclipse创建springboot项目_idea创建基于gradle构建的spring boot项目
本文使用idea演示如何创建一个spring boot项目并使用gradle构建.之后会演示如何使用gradle打war包.打war包失败的原因分析和解决方案. 创建项目 启动idea,点击Creat ...
- Docker Compose部署项目到容器-基于Tomcat和mysql的商城项目(附源码和sql下载)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- java项目管理系统_基于SSM框架的JAVA科研项目管理系统
每天记录学习,每天会有好心情.*^_^* 今天记录的项目是科研项目管理系统论文,这个项目是这么回事:随着计算机应用水平的提高和科研管理的规范化和制度化,建立一套适用于科研院所科研管理工作的科研项目管理 ...
- Jenkins项目实战之-MacOS High Sierra自动化打包方案的填坑之旅
前面我介绍了如何在android和iOS实现公司内部app的自动化打包构建的过程.这里写一个关于这个app自动化打包平台从想法到实践再到放机房平稳运行的一个回忆录.总的来说,在jenkins上实现an ...
最新文章
- 2018-3-20李宏毅机器学习笔记十----------Logistic Regression
- Linux 进程信号:信号的概念、生命周期、产生流程、阻塞
- 在大数据时代下金融风控的分类
- 在ubuntu 下 编译 在windows 下面使用的adb
- SUSE12SP3-Mycat(2)Schema.xml配置详解
- iOS 警告收录及科学快速的消除方法
- c++ vector排序_C++ vector动态数组的常见操作
- 浏览器饿了么cookie提取
- 【Kind2(基于SMT的自动模型检查器)学习笔记】contract的用法
- Python攻城师的成长——ORM(choices字段)、AJAX
- 从all-merged-Graph-Based Genes.csv 提取出 average expression avglogfc 或者pval doheatmap
- JavaScript笔记(狂神说)
- Node.js stream模块(三)背压机制
- 读心或成现实,OpenBCI要将脑波传感技术用于VR中
- java abcd_Java的一个小题目,字母abcd 对应1234类推,输入单词得到对应的数字和...
- 屏幕分辨率、像素相关概念拾遗
- Python计算两张图片的相似度
- Portraiture4免费磨皮插件支持PS/LR
- 方差分析(单因素方差分析)
- 对SH 球面谐波函数的理解