文档章节

jenkins 自动构建脚本

 成智
发布于 2017/07/25 23:52
字数 946
阅读 13
收藏 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是一个用Java编写的开源的持续集成(CI)工具,可持续、自动地构建/测试软件项目,监控一些定时执行的任务。具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点。 一、Jen...

张斌_青岛
2017/04/24
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生成maven项目镜像及容器

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

天云软件_北京天云融创_云计算_云平台
01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mybatis学习(1)

JDBC连接方式: 1.底层没有使用连接池,操作数据库需要频繁的创建和关闭连接,消耗资源。 2.写原生的JDBC代码在JAVA中,一旦需要修改SQL的话(比如表增加字段),JAVA需要整体重新编译,不利...

杨健-YJ
29分钟前
2
0
怎么组织文档

可以从以下几个方面考虑组织文档: ☐ 各种分支的界面截图和对应的类及文件 ☐ 框架或类图 ☐ 流程图 ☐ 时序图 ☐ 注意事项

-___-
41分钟前
3
0
分布式之数据库和缓存双写一致性方案解析

引言 为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 但是在更新缓存方面,对于更...

别打我会飞
43分钟前
9
0
我的oracle11G,12c OCM之路

ocm认证感悟 ---------------------- 距离拿到ocm证书已经过了1年的时间,当初拿到证书的心情到现在还记得。其实在每个DBA心里都有一个成为强者的梦想,需要被认可,我也一样。我干过开发,做...

hnairdb
44分钟前
2
1
手动部署kubernetes集群(1.13.1最新版)

一、机器规划 使用五台机子部署k8s集群,规划如下: master节点3台(同时也是etcd节点) node节点2台 ip分配如下: ip:192.168.10.101,主机名:k8s-etcd01 ip:192.168.10.102,主机名:k8s...

人在艹木中
49分钟前
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部