傻瓜式一键发布

本脚本运行条件

1 Linux服务器

2 服务器装有jdk tomcat svn maven

3 svn账号

脚本参数说明

cmd:本脚本的参数 all:表示更新代码->maven打包->重启tomcat  start:启动tomcat stop:关闭tomcat

svn_user:你的svn账号

svn_pass:你的svn密码
svn_path:svn项目地址

tomcat_path:tomcat路径如"/opt/tomcat7"
code_path:本地代码位置如 "/opt/code"
projectName:你当前项目名称如"dms_restaurant"

env:maven 打包传入的参数,根据自己的项目定义的变量参入(pom.xml中定义的)一般取值:dev(开发环境),test(测试环境),prod(生产环境)如果不用的话可以不用改,打包多参入一个参数没有影响

代码如下

 

#!/bin/sh
svn_user="XXXXX"
svn_pass="XXXXX"
svn_path="XXXXX"

#tomcat路径
tomcat_path="/opt/tomcat7"
#本地代码位置
code_path="/opt/code"
projectName="dms_restaurant"

#maven 打包传入的参数,根据自己的项目定义的变量参入(pom.xml中定义的)
env="dev"

#本脚本的参数 all:表示更新代码->maven打包->重启tomcat start:启动tomcat stop:关闭tomcat
cmd="all"

#如果用户传入指令则使用用户的指令
if [ $1 ]; 
then
	cmd=$1
fi
echo "cmd的值为:${cmd} all:表示更新代码->maven打包->重启tomcat start:启动tomcat stop:关闭tomcat"
if [ "${cmd}" = "all" ]; 
then
	#如果项目文件夹不存在说明没有下载过改项目代码,需要检出该项目
	if [ ! -d ${code_path}/${projectName} ]; 
	then
		echo ${projectName}"不存在,检出该项目"
		cd $code_path
		#注释的这个指令是 临时用账号密码更新。后来发现如果调用频率太高会提示输入密码所以用下面的指令,只用第一次输入用户名密码就可以了
		#svn checkout $svn_path --username $svn_user --password $svn_pass --no-auth-cache
		svn checkout $svn_path
	else
		echo ${projectName}"存在,更新代码"
		cd ${code_path}/${projectName}
		#svn update --username $svn_user --password $svn_pass --no-auth-cache
		svn update
	fi
fi

if [ "${cmd}" = "all" ];
then
	echo "maven 生成项目war包${projectName}"
	cd ${code_path}/${projectName}
	mvn install -Dmaven.test.skip=true -Denv=$env -U
	#如果打包出错直接退出
	if [ $? -ne 0 ]; 
	then
		  exit 1
	fi
fi

#切换到tomcat路径下
cd "${tomcat_path}/bin"

if [ "${cmd}" = "all" ];
then
	#获取到tomcat的线程id
	tomcat_id=$(ps -ef|grep "java"|grep -v "grep"|awk '{print $2} ')
	#如果tomcat线程id存在说明tomcat已经启动,则需要杀死tomcat进程
	if [ $tomcat_id ];
	then
		echo "关闭tomcat 线程id:${tomcat_id}"
		kill -9 ${tomcat_id}
	fi	

	#如果tomcat 下该项目存在则删除他
	if [ -e "${tomcat_path}/webapps/${projectName}" ]; 
	then
		echo "删除tomcat下的${projectName}项目"
		rm -rf "${tomcat_path}/webapps/${projectName}"
	fi
	
	#如果tomcat 下该项目war包存在则删除他
	if [ -e "${tomcat_path}/webapps/${projectName}.war" ]; 
	then
		echo "删除tomcat下的${projectName}.war"
		rm "${tomcat_path}/webapps/${projectName}.war"
	fi	
	
	#复制打包好的项目带tomcat下面
	cp "${code_path}/${projectName}/target/${projectName}.war" "${tomcat_path}/webapps/"
	./startup.sh
elif [ "${cmd}" = "stop" ]
then
	#获取到tomcat的线程id
	tomcat_id=$(ps -ef|grep "java"|grep -v "grep"|awk '{print $2} ')
	#如果tomcat线程id存在说明tomcat已经启动,则需要杀死tomcat进程
	if [ $tomcat_id ];
	then
		echo "关闭tomcat 线程id:${tomcat_id}"
		kill -9 ${tomcat_id}
	else
		echo "tomcat 未启动"
	fi
elif [ "${cmd}" = "start" ]
then
	./startup.sh
elif [ "${cmd}" = "log" ]
then
	cd "${tomcat_path}/logs"
	tail -200f catalina.out
fi

ps:该脚本经过自己的多次测试使用,如果网友发现有错误地方请及时指正,以便不误导其他网友。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值