JENKINS 打包发布脚本
#!/bin/bash
#nohup bash check_new_pkgs_dev.sh &
#steps below: ##发布的机器上运行这个脚本 #定时遍历发布包存放路径
#1.遍历所有要发布的包
#2.对于每一个包,找到这个包的时候,停止相应的服务
#3.将deployed下面相应的已发布目录归档到history中
#4.将压缩包解压到deployed下面相应的项目目录中
#5.将压缩包移到history中归档
#6.启动相应服务 ###注意进程只能启一个,!!!!! ##NOTE 发布zjzjc-voting的各个环境,单机版,zjdev环境之外的需要修改各dir从zjdev改到相应的环境 ##取脚本名字
PROGNAME=`basename $0` pacBaseNameArr=(zjzc-web-flow zjzc-web-api zjzc-pay zjzc-web-frontEnd zjzc-web-backoffice zjzc-voting-front zjzc-voting zjzc-wze-proxy zjzc-hy-core zjzc-hy-pre zjzc-hy-admin-pre zjzc-backoffice-sso-server zjzc-hy-front zjzc-hy-web-admin zjzc-message-proxy)
serviceNameArr=(tomcat8081 tomcat8082 tomcat8083 no no no tomcat8080 tomcat8084 tomcat8085 tomcat8086 tomcat8087 tomcat8088 no no tomcat8089)
tomcatPathKeyword=(8081 8082 8083 no no no 8080 8084 8085 8086 8087 8088 no no 8089) ##历史发布目录
UPLOAD_DIR=/t/deploy/zjdev/deployableApps ##应用部署的目录
DEPLOYED_DIR=/t/deploy/zjdev/deployedApps ##历史应用目录
HISTORY_FOLDER=/t/deploy/zjdev/deployableApps/history/folder ##历史的war包
HISTORY_WAR=/t/deploy/zjdev/deployableApps/history/war if [ -d "$UPLOAD_DIR" ]
then
:
else
mkdir -p $UPLOAD_DIR
fi if [ -d "$DEPLOYED_DIR" ]
then
:
else
mkdir -p $DEPLOYED_DIR
fi if [ -d "$HISTORY_FOLDER" ]
then
:
else
mkdir -p $HISTORY_FOLDER
fi if [ -d "$HISTORY_WAR" ]
then
:
else
mkdir -p $HISTORY_WAR
fi
##pacBaseNameArr=(zjzc-web-flow zjzc-web-api zjzc-pay zjzc-web-frontEnd zjzc-web-backoffice zjzc-voting-front zjzc-voting zjzc-wze-proxy zjzc-hy-core zjzc-hy-pre zjzc-hy-admin-pre zjzc-backoffice-sso-server zjzc-hy-front zjzc-hy-web-admin zjzc-message-proxy)
##pacBaseNameArr 数组长度
appArrLen=${#pacBaseNameArr[*]}
while true
do
DATETIME=`date +%Y''%m''%d'-'%H''%M''%S` ### check if there is new war at UPLOAD_DIR ###
#ls -l $UPLOAD_DIR/${APPNAME}*.war >/dev/null 2>&1 #if [ $? -eq "0" ] #then
for((i=0;i<"$appArrLen";i=i+1))
do ##UPLOAD_DIR=/t/deploy/zjdev/deployableApps UPLOAD_DIR_WAR_COUNT=`ls -l $UPLOAD_DIR | grep -E "${pacBaseNameArr[$i]}.*.(rar|zip|war)$" | wc -l` if [ $UPLOAD_DIR_WAR_COUNT -ne "1" ]
then
echo "$DATETIME ${pacBaseNameArr[$i]} has too many pkgs or no pkg, please check it, now continue! " >>/var/log/${PROGNAME}.out
continue
fi ###no need to restart service for static web ### ##serviceNameArr=(tomcat8081 tomcat8082 tomcat8083 no no no tomcat8080 tomcat8084 tomcat8085 tomcat8086 tomcat8087 tomcat8088 no no tomcat8089)
##静态资源不重启,tomcat重启
if [ ${serviceNameArr[$i]} != "no" ]
then
###stop service
service ${serviceNameArr[$i]} stop ##每个应用的进程
procIds=`ps -ef | grep -E java.*${tomcatPathKeyword[$i]} | awk '{printf $2 " "}'`
procNums=`echo $procIds | wc -w`
if [ $procNums -gt "1" ]
then
echo "service with keyword: ${tomcatPathKeyword[i]} still has process ids: $procIds survived, kill them after 10 seconds"
sleep 10
kill $procIds
fi
echo "service ${serviceNameArr[$i]} stopped"
fi echo "echo UPLOAD_DIR_WAR_COUNT:$UPLOAD_DIR_WAR_COUNT at $DATETIME for ${pacBaseNameArr[$i]}"; ### move current tomcat to HISTORY_FOLDER ##DEPLOYED_DIR=/t/deploy/zjdev/deployedApps ##移动当前应用目录 到历史目录下HISTORY_FOLDER=/t/deploy/zjdev/deployableApps/history/folder ##HISTORY_FOLDER=/t/deploy/zjdev/deployableApps/history/folder
mv $DEPLOYED_DIR/${pacBaseNameArr[$i]} $HISTORY_FOLDER/${pacBaseNameArr[$i]}_$DATETIME ##UPLOAD_DIR=/t/deploy/zjdev/deployableApps ##取应用的名字zjzc-web-api-1.1.17.war_20160708-151024
NEW_WAR_NAME=`ls -l $UPLOAD_DIR/${pacBaseNameArr[$i]}*.* | awk -F"/" '{ print $NF }'` ### unzip new war ##应用目录,判断backoffice,后面添加/backoffice
subfolder="${pacBaseNameArr[$i]}";
if [ ${pacBaseNameArr[$i]} == "zjzc-web-backoffice" ]
then
subfolder="$subfolder/backoffice"
fi ##DEPLOYED_DIR=/t/deploy/zjdev/deployedApps mkdir -p $DEPLOYED_DIR/$subfolder ##把打包好的包,解压到对应目录
unzip -o $UPLOAD_DIR/$NEW_WAR_NAME -d $DEPLOYED_DIR/$subfolder ### mov new war to HISTORY_WAR ##UPLOAD_DIR=/t/deploy/zjdev/deployableApps ##把打包好的包移走到/t/deploy/zjdev/deployableApps/history/war
##HISTORY_WAR=/t/deploy/zjdev/deployableApps/history/war mv $UPLOAD_DIR/$NEW_WAR_NAME $HISTORY_WAR/${NEW_WAR_NAME}_$DATETIME ###no need to restart service for static web
if [ ${serviceNameArr[$i]} != "no" ]
then
###start service
service ${serviceNameArr[$i]} start
echo "service started"
fi done #fi sleep 10
done
JENKINS 打包发布脚本的更多相关文章
- jenkins 项目发布脚本
构建shell #!/bin/bash ########################################################################## 编译部分 ...
- Mac Jenkins+fastlane 简单几步实现iOS自动化打包发布 + jenkins节点设置
最近在使用jenkins 实现ios自动化打包发布蒲公英过程实践遇到了一些坑,特意记录下来方便有需要的人. 进入正题: 一.安装Jenkins 1.Mac上安装Jenkins 遇到到坑 因为 Jenk ...
- ios外包公司—北京动点软件分享:IOS工程自动打包并发布脚本实现
前言 IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的.尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作.通过一番研究后,遂决定写一系列脚本, ...
- IOS工程自动打包并发布脚本实现
http://blog.csdn.net/ccf0703/article/details/8588667 文章首发地址:http://webfrogs.me/2013/02/18/ios-automa ...
- Jenkins+GitHub 项目环境搭建和发布脚本(二)
Jenkins+gitHub项目搭建配置 项目发布脚本 profilesScript.sh (支持不同环境配置文件) #!/bin/bash ACTIVE=$ JENKINS_PATH=/var/li ...
- CI持续集成系列之(九)代码发布脚本模板书写
前言 前面我们介绍了Jenkins来发布项目通过nginx来展示流程,那里只是提供了一个简单的测试脚本,接下来呢介绍一下一个比较完善的发布脚本,该脚本可实现从gitlab服务器获取代码,打包,部署到W ...
- dubbo框架的web端(war)和server端(tar.gz)结合jenkins打包方式
一.web端程序,打包成war包 jenkins配置 1.项目名称,旧文件处理配置 2.参数构建配置 3.源码库配置 4.打包文件pom.xml配置及多环境打包传参,此处传参qa(表示打测试环境包,名 ...
- 利用Jenkins打包ISO和QCOW2镜像文件
现在的云虚拟化环境越来越多,经常会碰到需要修改并重新打包新的ISO或QCOW2镜像文件.通过手工的方式会比较麻烦,所以在镜像发布的生产环境中可以利用Jenkins来进行定期打包发布,以下介绍Jenki ...
- jenkins项目发布
目录 一.简介 二.docker打包 一.后端打包 二.前端打包 三.启动容器 四.完整代码 五.发布测试 六.优化方案 七.源码地址: 八.参考 一.简介 1.该章节基于jenkins.Harbor ...
随机推荐
- 一次搞定cocos2d-x的 Android.mk 文件
cocos2d-x 打 android 包时要修改 Android.mk 文件,但每次修改很麻烦,如果源文件很多的话就坑死了,也可以写一个脚本来自动生成这个文件,但每次还要重新生成一下,将其修改下面的 ...
- ThinkPHP - 图片水印
图片添加水印 可以通过使用Image类的水印方法给图片添加水印支持,例如:water 给图片添加水印 用法 water($source, $water, $savename=null, $alph ...
- 为什么国内的网盘公司都在 TB 的级别上竞争,成本会不会太高?(还有好多其它回复)
作者:杜鑫链接:http://www.zhihu.com/question/21591490/answer/18762821来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 ...
- BIOS和CMOS的联系与区别
BIOS为何物? BIOS就是(Basic Input/Output System,基本输入/输出系统的缩写)在电脑中起到了最基础的而又最重要的作用.是电脑中最基础的而又最重要的程序.把这一段程序放在 ...
- 用python解析html
python中,有三个库可以解析html文本,HTMLParser,sgmllib,htmllib.他们的实现方法不通,但功能差不多.这三个库中 提供解析html的类都是基类,本身并不做具体的工作.他 ...
- Ubuntu 12.04 安装JDK 8和Eclipse
Ubuntu 12.04 下安装 JDK8 方法一:(缺点是安装时附加openjdk等大量程序并无法去除,长处是安装简单) $ sudo apt-get install eclipse 方法二:(长处 ...
- python-Day3-set 集合-counter计数器-默认字典(defaultdict) -可命名元组(namedtuple)-有序字典(orderedDict)-双向队列(deque)--Queue单项队列--深浅拷贝---函数参数
上节内容回顾:C语言为什么比起他语言块,因为C 会把代码变异成机器码Pyhton 的 .pyc文件是什么python 把.py文件编译成的.pyc文件是Python的字节码, 字符串本质是 字符数组, ...
- Hadoop 配置文件简介
1.core-site.xml文件 这是一个描述集群中NameNode结点的URI-统一资源标识符(包括协议,主机名称,端口号),集群里面的每一台机器都需要知道 NameNode的地址.DataNod ...
- Java正则表达式基本应用
一.概述 正则表达式因为其强大的字符串处理能力,刚开始被被广泛地应用到各种UNIX工具中,如大家熟知的 Perl脚本语言 .后来正则表达式在各种 计算机语言 和各种应用领域得到了广泛的应用和发展,目前 ...
- Jquery moblie中的分栏布局
大家好,很高兴又与大家见面了,今天我要给大家展示的是自己对jquery moblie中网格布局的理解.可能不是尽善尽美,希望大家多多体谅! 在jquery moblie中有两种布局,一种是表格布局( ...