#!/bin/bash
# operating environment :CentOS release 6.8
# chkconfig: 2345 80 50
# Auther:wangjiana
#tomcat存放地址
url=/dzzb/usr/local/
#代码拉取地址
urlsvn=/data/svnupload/
#更新日志
Update_log="/dzzb/usr/local/Update_log.log"
time=`date "+%Y-%m-%d %H:%M:%S"`
Date=`date +%Y%m%d%H%M%S`
#tomcat的pid
pid=$(ps -ef | grep tomcat-$proflie | grep -v grep | awk '{print $2}')
#yum install -y svn wget vim unzip
#test函数测试tomcat的是否启动
function test(){
if [ "$pid" != "" ];then
echo "tomcat-$proflie is running!"
else
echo "tomcat-$proflie may not be running!"
fi
}
#清除缓存
function cache(){
sync
echo 3 > /proc/sys/vm/drop_caches
}
#tomcat重启函数
function code_update(){
if [ "$pid" != "" ];then
kill -9 $pid
fi
sleep 10
rm -rf $url/tomcat-$proflie/work/Catalina/*
rm -rf $url/tomcat-$proflie/temp/*
rm -rf $url/tomcat-$proflie/logs/*
cache
$url/tomcat-$proflie/bin/startup.sh
sleep 10
screen tail -f /dzzb/usr/local/tomcat-$proflie/logs/catalina.out
clear
test
}
#将拉取得代码进行覆盖
function project_change(){
cat<<EOF
测试站 test
EOF
read -p "Input update items: " proflie
cd $url/tomcat-$proflie/webapps/
#判断webapps文件下的项目文件
for i in $(ls); do
#statements
if [ -d $i ]; then
#statements
tar cvf $Date$i.tar.gz $i
yes|cp -ir /data/svnupload/* $url/tomcat-$proflie/webapps/$i/
#判断拉取得代码中是否含有一下文件,有则调用函数code_update
bb=$(find /data/svnupload/ \( -name "*.class" -o -name "*.xml" -o -name "*.jar" -o -name "*.properties" \))
if [ ! -n "$bb" ];then
echo "tomcat is not update"
echo "$time tomcat_project_name :$profile version_number:$version_number " >> /dzzb/usr/local/Update_log.log
else
code_update
echo "$time tomcat_project_name :$profile version_number:$version_number " >> /dzzb/usr/local/Update_log.log
fi
fi
done
}
#拉取代码
function svn_code(){
cd $urlsvn
/usr/bin/svn checkout $1
version_number=`echo $1 | awk -F / '{ print $8 }'`
unzip $version_number/*.zip&&aa=$(echo $?)
if [ "$aa" = "0" ]; then
#statements
rm -rf $urlsvn$version_number
project_change
else
echo "reload svn checkout code"
fi
}
svn_code $1
rm -rf /data/svnupload/*