傻瓜式一键发布

来源:互联网 发布:淘宝qq三国游戏币 编辑:程序博客网 时间:2024/06/05 11:03

本脚本运行条件

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/shsvn_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:关闭tomcatcmd="all"#如果用户传入指令则使用用户的指令if [ $1 ]; thencmd=$1fiecho "cmd的值为:${cmd} all:表示更新代码->maven打包->重启tomcat start:启动tomcat stop:关闭tomcat"if [ "${cmd}" = "all" ]; then#如果项目文件夹不存在说明没有下载过改项目代码,需要检出该项目if [ ! -d ${code_path}/${projectName} ]; thenecho ${projectName}"不存在,检出该项目"cd $code_path#注释的这个指令是 临时用账号密码更新。后来发现如果调用频率太高会提示输入密码所以用下面的指令,只用第一次输入用户名密码就可以了#svn checkout $svn_path --username $svn_user --password $svn_pass --no-auth-cachesvn checkout $svn_pathelseecho ${projectName}"存在,更新代码"cd ${code_path}/${projectName}#svn update --username $svn_user --password $svn_pass --no-auth-cachesvn updatefifiif [ "${cmd}" = "all" ];thenecho "maven 生成项目war包${projectName}"cd ${code_path}/${projectName}mvn install -Dmaven.test.skip=true -Denv=$env -U#如果打包出错直接退出if [ $? -ne 0 ]; then  exit 1fifi#切换到tomcat路径下cd "${tomcat_path}/bin"if [ "${cmd}" = "all" ];then#获取到tomcat的线程idtomcat_id=$(ps -ef|grep "java"|grep -v "grep"|awk '{print $2} ')#如果tomcat线程id存在说明tomcat已经启动,则需要杀死tomcat进程if [ $tomcat_id ];thenecho "关闭tomcat 线程id:${tomcat_id}"kill -9 ${tomcat_id}fi#如果tomcat 下该项目存在则删除他if [ -e "${tomcat_path}/webapps/${projectName}" ]; thenecho "删除tomcat下的${projectName}项目"rm -rf "${tomcat_path}/webapps/${projectName}"fi#如果tomcat 下该项目war包存在则删除他if [ -e "${tomcat_path}/webapps/${projectName}.war" ]; thenecho "删除tomcat下的${projectName}.war"rm "${tomcat_path}/webapps/${projectName}.war"fi#复制打包好的项目带tomcat下面cp "${code_path}/${projectName}/target/${projectName}.war" "${tomcat_path}/webapps/"./startup.shelif [ "${cmd}" = "stop" ]then#获取到tomcat的线程idtomcat_id=$(ps -ef|grep "java"|grep -v "grep"|awk '{print $2} ')#如果tomcat线程id存在说明tomcat已经启动,则需要杀死tomcat进程if [ $tomcat_id ];thenecho "关闭tomcat 线程id:${tomcat_id}"kill -9 ${tomcat_id}elseecho "tomcat 未启动"fielif [ "${cmd}" = "start" ]then./startup.shelif [ "${cmd}" = "log" ]thencd "${tomcat_path}/logs"tail -200f catalina.outfi

ps:该脚本经过自己的多次测试使用,如果网友发现有错误地方请及时指正,以便不误导其他网友。
0 0
原创粉丝点击