基于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的自动化打包发布项目相关推荐

  1. React Native项目自动化打包发布

    今天这篇文章的目的是在rn项目的构建,并不会涉及到rn框架或者使用的讲解,说起构建,特别是前端构建大家应该很快会想到webpack.Grunt. Gulp等.而这些工具在rn项目中就显得有些鸡肋.所以 ...

  2. 发布nuget包的正确姿势---cicd自动打包发布

    最轻便的发布nuget包方式,方便cicd自动打包发布nuget包 首先新建项目 项目名随便取,这里就叫它GuiH.ClassLibrary 默认即可,需要改目标版本时,等创建好再改 项目创建好了 随 ...

  3. iOS自动化打包发布之fastlane 实现 发布AppStore 蒲公英

    iOS自动化打包发布之fastlane 实现 fastlane官方文档 前提插件配置 首先要安装xcode-select 然后安装fastlane sudo gem install fastlane ...

  4. Maven实战(四)——基于Maven的持续集成实践

    相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订,它清晰地解释了持续集成的概念,并总结了 ...

  5. ssm项目模板_基于SSM的论坛系统发布可商业、学习、毕设

    基于SSM的论坛系统发布,界面非常的漂亮,功能很齐全,非常的6-- SSM旅游论坛是一款基于JAVA企业级平台研发的社交管理系统,是一个可以用来搭建门户.群组.论坛和问答的社区系统,是将SNS社会化网 ...

  6. eclipse创建springboot项目_idea创建基于gradle构建的spring boot项目

    本文使用idea演示如何创建一个spring boot项目并使用gradle构建.之后会演示如何使用gradle打war包.打war包失败的原因分析和解决方案. 创建项目 启动idea,点击Creat ...

  7. Docker Compose部署项目到容器-基于Tomcat和mysql的商城项目(附源码和sql下载)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  8. java项目管理系统_基于SSM框架的JAVA科研项目管理系统

    每天记录学习,每天会有好心情.*^_^* 今天记录的项目是科研项目管理系统论文,这个项目是这么回事:随着计算机应用水平的提高和科研管理的规范化和制度化,建立一套适用于科研院所科研管理工作的科研项目管理 ...

  9. Jenkins项目实战之-MacOS High Sierra自动化打包方案的填坑之旅

    前面我介绍了如何在android和iOS实现公司内部app的自动化打包构建的过程.这里写一个关于这个app自动化打包平台从想法到实践再到放机房平稳运行的一个回忆录.总的来说,在jenkins上实现an ...

最新文章

  1. 2018-3-20李宏毅机器学习笔记十----------Logistic Regression
  2. Linux 进程信号:信号的概念、生命周期、产生流程、阻塞
  3. 在大数据时代下金融风控的分类
  4. 在ubuntu 下 编译 在windows 下面使用的adb
  5. SUSE12SP3-Mycat(2)Schema.xml配置详解
  6. iOS 警告收录及科学快速的消除方法
  7. c++ vector排序_C++ vector动态数组的常见操作
  8. 浏览器饿了么cookie提取
  9. 【Kind2(基于SMT的自动模型检查器)学习笔记】contract的用法
  10. Python攻城师的成长——ORM(choices字段)、AJAX
  11. 从all-merged-Graph-Based Genes.csv 提取出 average expression avglogfc 或者pval doheatmap
  12. JavaScript笔记(狂神说)
  13. Node.js stream模块(三)背压机制
  14. 读心或成现实,OpenBCI要将脑波传感技术用于VR中
  15. java abcd_Java的一个小题目,字母abcd 对应1234类推,输入单词得到对应的数字和...
  16. 屏幕分辨率、像素相关概念拾遗
  17. Python计算两张图片的相似度
  18. Portraiture4免费磨皮插件支持PS/LR
  19. 方差分析(单因素方差分析)
  20. 对SH 球面谐波函数的理解

热门文章

  1. (Record)西数企业级硬盘查验方法
  2. memset, fill 对bool,int 赋值的效率
  3. PT与PX,em(%)区别
  4. 解决小程序Input框输入文字后触摸并滚动屏幕不松开,input内文字一起滚动问题
  5. 项目风险管理十大黄金法则!高质量项目管理必杀技!
  6. Windows 如何配置 scratch 3.0 GUI
  7. 全国计算机自考应用题,近几年度自考管理系统中计算机硬应用题汇总.doc
  8. JDK8 stream流的骚操作
  9. TCP 为什么需要三次握手?
  10. 信息安全方向就业要考哪些证书?