文档章节

jenkins 自动构建脚本

 成智
发布于 2017/07/25 23:52
字数 946
阅读 12
收藏 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
Gitlab利用Webhook实现Push代码后的jenkins自动构建

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

吞吞吐吐的
2017/08/10
0
0
搭建jenkins实现自动化部署

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

mingle
2015/08/24
677
0
Jenkins环境搭建总结

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

张斌_青岛
2017/04/24
0
0
利用Jenkins生成maven项目镜像及容器

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

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

没有更多内容

加载失败,请刷新页面

加载更多

play framework 如何支持多数据源

有段时间没有写博客了,但今天又写一篇了,主要是因为这事有一丝自己的思考和动手实践,所以就记录下来了。 现有的问题: play 1.2.4 两台数据库服务器,但是play1.2.4 并不支持同时连接两台...

tuerqidi
18分钟前
0
0
Mysql only_full_group_by解析

查看当前数据库模式: select @@sql_mode; 原因: mysql 5.7中的sql_mode的值中包含'ONLY_FULL_GROUP_BY'; 处理:执行以下SQL set GLOBAL sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,N......

年轻的中年大叔
19分钟前
1
0
防止表单重复提交

1:前端方式(治标不治本) $("#admin-role-save").click(function(){//admin-role-save为submit的idvar ts=$(this);var ts_old_val=ts.val();ts.val("提交中....");ts.att...

uug
19分钟前
1
0
保持屏幕常亮

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 在act的created方法中调用即可,一般是播放视频的时候......

Carbenson
20分钟前
1
0
智能合约实施指南

与区块链技术一样,智能合约在商业领域也非常有价值。 为了让我们的读者彻底了解智能合约是什么以及它们如何影响现代商业的交易方式,我们准备了本指南。 集中商业模式正在给去中心化的模式让...

geek12345
22分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部