文档章节

jenkins 自动构建脚本

 成智
发布于 2017/07/25 23:52
字数 946
阅读 10
收藏 0
点赞 0
评论 0

jenkins 任务上传到服务器后的执行脚本,

关闭tomcat-->备份删除旧应用-->解压war-->删除war-->正则替换发布环境配置文件-->启动tomcat

#!/bin/sh
#chmod u+x /ucap/jenkins/bashScript/user-center.sh
#sh /ucap/jenkins/bashScript/user-center.sh

#定义变量开始
killTime=1
jdkName="jdk_1_7_0_80"
tomcatName="tomcat_7_0_72_X64_8789_gxw"
tomcatPath="/tools/tomcat/$tomcatName"
serviceName="tomcat_7_0_72_X64_8789_gxw"
ucapPath="/ucap"

appName="user-center"
appPath="$ucapPath/apps/$appName"

jenkinsPath="$ucapPath/jenkins"
backAppPath="$jenkinsPath/bak/$appName"
warPath="$jenkinsPath/war"
bashPath="$jenkinsPath/bashScript/$appName.sh"
logPath="$jenkinsPath/publishLog/$appName-publish.log"



#定义变量结束







echo "#################################################" >> $logPath
echo "############## begin run $appName bash  $bashPath ###################" >> $logPath
echo "######################" $(date +"%Y-%m-%d %H:%M:%S:%N") "###########################" >> $logPath
echo "#################################################" >> $logPath




echo stop $tomcatPath
#sh $tomcatPath/bin/shutdown.sh

echo stop systemctl $serviceName
systemctl stop $serviceName

tomcatPid=`ps -ef | grep $jdkName | grep $tomcatName |awk '{print $2}'`

if [ -n "$tomcatPid" ]
then {  
	echo sleep $killTime 
	sleep $killTime 
	kill -9 $tomcatPid
	echo $(date +"%Y-%m-%d %H:%M:%S:%N")" 睡眠$killTime秒后,kill $tomcatName运行的pid为 "$tomcatPid >> $logPath
} else  {
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 已停止服务[stop systemctl $serviceName]或 未发现$tomcatName运行 " >> $logPath
}
fi  


#删除日志
#rm -rf $ucapPath/log/$appName/*
#rm -rf $tomcatPath/logs/*
rm -rf $tomcatPath/work/Catalina/localhost/$appName/*
#删除日志


echo back $appPath
if [ -x "$appPath" ]
then {
	backName="$backAppPath/$appName-$(date +%Y%m%d-%H%M%S).tar.gz"
	tar -zcf $backName $appPath
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 备份$appPath目录到$backName" >> $logPath
} else {
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 未找到$appPath目录 " >> $logPath
}
fi



echo del $appPath
if [ -x "$appPath" ]
then {
	rm -rf $appPath/*
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 删除$appPath目录下所有文件 " >> $logPath
} else {
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 未找到$appPath目录 " >> $logPath
}
fi


echo zip $warPath/$appName.war
if [ -f "$warPath/$appName.war" ]
then {	
	unzip -oq $warPath/$appName.war -d $appPath
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 解压$warPath/$appName.war 到 $appPath " >> $logPath
} else {
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 未找到$warPath/$appName.war文件 " >> $logPath
}
fi


echo del $warPath/$appName.war
if [ -f "$warPath/$appName.war" ]
then {		
	rm -rf $warPath/$appName.war
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 删除$warPath/$appName.war " >> $logPath
} else {
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 未找到$warPath/$appName.war文件 " >> $logPath
}
fi



echo update config
echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改配置文件开始 " >> $logPath

log4jFile="$appPath/WEB-INF/classes/log4j.properties"
projectFile="$appPath/WEB-INF/classes/user.properties"
attrFile="$appPath/WEB-INF/classes/fileUpload.properties"
cacheFileLocal="$appPath/WEB-INF/classes/cache/ehcache-local.xml"
cacheFileRmi="$appPath/WEB-INF/classes/cache/ehcache-rmi.xml"

echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改日志配置 path=$log4jFile" >> $logPath
	replacePropertieKey="log4j.appender.RollingFile.File"
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改日志配置 处理$replacePropertieKey" >> $logPath
	sed -i "s/^$replacePropertieKey/#$replacePropertieKey/g" $log4jFile
	sed -i "s/^#ucap_$replacePropertieKey/$replacePropertieKey/g" $log4jFile

echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改项目配置 path=$projectFile" >> $logPath
	replacePropertieKey="cas.project.url"
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改附件配置 处理$replacePropertieKey" >> $logPath
	sed -i "s/^$replacePropertieKey/#$replacePropertieKey/g" $projectFile
	sed -i "s/^#ucap_$replacePropertieKey/$replacePropertieKey/g" $projectFile


echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改附件配置 path=$attrFile" >> $logPath
	replacePropertieKey="userfiles.basedir"
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改附件配置 处理$replacePropertieKey" >> $logPath
	sed -i "s/^$replacePropertieKey/#$replacePropertieKey/g" $attrFile
	sed -i "s/^#ucap_$replacePropertieKey/$replacePropertieKey/g" $attrFile

	replacePropertieKey="projectPath"
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改附件配置 处理$replacePropertieKey" >> $logPath
	sed -i "s/^$replacePropertieKey/#$replacePropertieKey/g" $attrFile
	sed -i "s/^#ucap_$replacePropertieKey/$replacePropertieKey/g" $attrFile
	
	replacePropertieKey="file.root.path"
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改附件配置 处理$replacePropertieKey" >> $logPath
	sed -i "s/^$replacePropertieKey/#$replacePropertieKey/g" $attrFile
	sed -i "s/^#ucap_$replacePropertieKey/$replacePropertieKey/g" $attrFile

	replacePropertieKey="file.system.url"
	echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改附件配置 处理$replacePropertieKey" >> $logPath
	sed -i "s/^$replacePropertieKey/#$replacePropertieKey/g" $attrFile
	sed -i "s/^#ucap_$replacePropertieKey/$replacePropertieKey/g" $attrFile

echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改缓存配置 path=$cacheFileLocal" >> $logPath
	sed -i "s/^\t<diskStore path=\"\(.\+\)\/>/<\!-- & -->/g" $cacheFileLocal
	sed -i -e "s/<\!-- ucap_//g" -e "s/ucap_ -->//g" $cacheFileLocal

echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改缓存配置 path=$cacheFileRmi" >> $logPath
	sed -i "s/^\t<diskStore path=\"\(.\+\)\/>/<\!-- & -->/g" $cacheFileRmi
	sed -i -e "s/<\!-- ucap_//g" -e "s/ucap_ -->//g" $cacheFileRmi


echo update config end
echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 修改配置文件开始 " >> $logPath



echo start $tomcatPath
#sh $tomcatPath/bin/startup.sh
#echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 启动$tomcatPath/bin/startup.sh " >> $logPath
systemctl start $serviceName
echo $(date +"%Y-%m-%d %H:%M:%S:%N") " 启动$serviceName 服务 " >> $logPath




echo "#################################################" >> $logPath
echo "############## end run $appName bash $bashPath ###################" >> $logPath
echo "######################" $(date +"%Y-%m-%d %H:%M:%S:%N") "###########################" >> $logPath
echo "#################################################" >> $logPath
echo "" >> $logPath
echo "" >> $logPath
echo "" >> $logPath


 

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 19
码字总数 3247
作品 0
广州
程序员
搭建 Jenkins-2.83 服务,部署 spring boot 项目

Jenkins 是什么? Jenkins 是一个可扩展的持续集成引擎。 主要用于: 持续、自动地构建/测试软件项目。 监控一些定时执行的任务。 Jenkins 拥有的特性包括: 易于安装-只要把部署到,不需要数...

PengLei
2017/10/11
0
0
搭建jenkins实现自动化部署

Jenkins是一个非常有名的CI工具,开源、免费,通过jenkins我们可以更加智能、快速的持续集成,尽早的发现代码里的问题并及时的部署上去。 Install Jenkins On Ubuntu wget -q -O - https://j...

mingle
2015/08/24
677
0
Gitlab利用Webhook实现Push代码后的jenkins自动构建

之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台。通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布。这种方式每次在发版的时候,需要人工去执行jenkins...

吞吞吐吐的
2017/08/10
0
0
Jenkins环境搭建总结

Jenkins是一个用Java编写的开源的持续集成(CI)工具,可持续、自动地构建/测试软件项目,监控一些定时执行的任务。具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点。 一、Jen...

张斌_青岛
2017/04/24
0
0
使用Jenkins配置iOS自动化构建工具

使用Jenkins配置iOS自动化构建工具 关于iOS自动化构建其实并不复杂,通过一些简单的Git与Xcode指令,加上UI,我们自己也可以动手编写一款自动化构建工具。这在之前的博客中也有涉及,有兴趣的...

珲少
06/28
0
0
利用Jenkins生成maven项目镜像及容器

利用Jenkins生成maven项目镜像及容器 天云软件北京天云融创云计算云平台2018-01-031 阅读 maven微服务Jenkinsdocker 导读 :本文根据天云软件研发工程师12月28日在DockOne技术社区的分享整理...

天云软件_北京天云融创_云计算_云平台
01/03
0
0
在Jenkins上做一个定时闹钟

[本文出自天外归云的博客园] 利用Jenkins定时任务来做一个闹钟,每天隔一段时间提醒自己一下“你该休息了!别老坐着!出去走一走!珍爱生命,远离久坐!” 首先在Jenkins上创建一个node。 创...

天外归云
03/30
0
0
基于 Jenkins 快速搭建持续集成环境

简介: 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。本文正是...

IBMdW
2011/11/24
20.8K
8
基于Jenkins 快速搭建持续集成环境

持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile)...

openthings
2015/12/09
338
0
gitlab+jenkins+maven持续集成自动化部署平台

背景:为了改变目前手工发布项目的流程烦锁,耗时,容易出错,浪费人力物力财力,低效的状况,搭建基于docker容器化的git+jenkins+maven持续集成自动化部署平台,实现从代码提交到生产部署的...

xiejunbo
2017/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

线程安全,底层实现原理和JMM

让多线程下的类安全起来:无状态、加锁、让类不可变、栈封闭(方法封装) 、安全的发布对象(不暴露成员) 死锁 一定发生在多个线程争夺多个资源里的情况下,发生的原因是每个线程拿到了某个(某...

这很耳东先生
7分钟前
0
0
MyBatis源码解读之延迟加载

1. 目的 本文主要解读MyBatis 延迟加载实现原理 2. 延迟加载如何使用 Setting 参数配置 设置参数 描述 有效值 默认值 lazyLoadingEnabled 延迟加载的全局开关。当开启时,所有关联对象都会延...

无忌
13分钟前
0
0
javascript 类变量的实现

代码如下: function echo(){ for(let i=0;i<arguments.length;i++) console.log(arguments[i]);}function extend(o, p){for (prop in p) {o[prop] = p[prop]}retur......

backbye
17分钟前
0
2
编程语言对比分析:Python与Java和JavaScript(图)

编程语言对比分析:Python与Java和JavaScript(图): 凭什么说“Python 太慢,Java 太笨拙,我讨厌 JavaScript”?[图] 编程语言生而为何? 我们人类从原始社会就是用语言表达自己,互相沟通...

原创小博客
26分钟前
0
0
Akka构建Reactive应用《one》

看到这Akka的官网,描述使用java或者scala构建响应式,并发和分布式应用更加简单,听着很高级的样子,下面的小字写着消息驱动,但是在quickstart里面又写容错事件驱动,就是这么钻牛角尖。 ...

woshixin
37分钟前
0
0
ffmpeg源码分析 (四)

io_open 承接上一篇,对于avformat_open_input的分析还差其中非常重要的一步,就是io_open,该函数用于打开FFmpeg的输入输出文件。 在init_input中有这么一句 if ((ret = s->io_open(s, &s-...

街角的小丑
39分钟前
0
0
String,StringBuffer ,StringBuilder的区别

不同点 一、基类不同 StringBuffer、StringBuilder 都继承自AbStractStringBuilder,String 直接继承自 Object 2、底层容器“不同” 虽然底层都是字符数组,但是String的是final修饰的不可变...

不开心的时候不要学习
54分钟前
0
0
nodejs 文件操作

写文件code // 加载文件模块var fs = require("fs");var content = 'Hello World, 你好世界!';//params 文件名,内容,编码,回调fs.writeFile('./hello.txt',content,'utf8',function (er......

yanhl
56分钟前
0
0
SpringBoot mybits 查询为0条数据 但是在Navicat 中可以查询到数据

1.页面请求: 数据库查询: 2018-07-16 17:56:25.054 DEBUG 17312 --- [nio-9010-exec-3] c.s.h.m.C.selectSelective : ==> Preparing: select id, card_number, customer_id, customer_nam......

kuchawyz
今天
0
0
译:Self-Modifying cod 和cacheflush

date: 2014-11-26 09:53 翻译自: http://community.arm.com/groups/processors/blog/2010/02/17/caches-and-self-modifying-code Cache处在CPU核心与内存存储器之间,它给我们的感觉是,它具......

我叫半桶水
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部