Linux CentOS6.8 项目部署脚本实现

面向刚接触linux环境的新手,老鸟勿拍~

部署环境及配置: tomcat9,maven3.3.9,git 1.12.0

##定义一些变量,将需要用到的 source目录,项目目录,名称等定义变量,方便使用
buildpkg=/mnt/xxx-tomcat-9.0.0.M4/gitsourcepkg/ #git拉取源码存放目录 buildpkgName=xxx-0.0.1-SNAPSHOT.war #maven打包后生成的包名 targetpath=/mnt/xxx-tomcat-9.0.0.M4/gitsourcepkg/xxx/target/tbkmark-0.0.1-SNAPSHOT.war #maven打包后包存放的位置 projectName=/mnt/xxx-tomcat-9.0.0.M4/gitsourcepkg/xxx #git拉下来的代码项目路径,进入到该目录下执行 mvn package可执行maven打包 tomcatName=xxx #tomcat的名字,方便同一个环境下分多个tomcat的时候查询指定tomcat的进程 projectPath=/mnt/xxx-tomcat-9.0.0.M4/webapps/ROOT #项目在tomcat中存放的路径 startpath=/mnt/xxx-tomcat-9.0.0.M4/bin/startup.sh #tomcat启动脚本 logpath=/mnt/xxx-tomcat-9.0.0.M4/logs/catalina.out #日志路径 echo "##### start build xxx进入build目录,清理旧数据 拉取项目#####" cd $buildpkg rm -rf * git clone git链接 echo "##### git pull ok git上拉取项目完毕后,进入项目目录中进行打包,并且跳过测试代码#####" cd $projectName mvn package -Dmaven.test.skip=true echo "##### maven pkg ok 打包成功后 查看指定tomcat进程,并且杀掉,然后将tomcat下存放项目的目录清空,将新打包的项目包复制到tomcat下指定目录 并解压#####" ps -ef | grep tomcat | grep $tomcatName | awk '{print $2}'|xargs kill -9 cd $projectPath rm -rf * cp $targetpath $projectPath jar -xvf $buildpkgName echo "##### kill tomcat and cp pkg to root ok !!! 复制生产环境专用的配置文件,启动tomcat 等待5秒后查看日志 #####" cp /application.properties /mnt/xxx-tomcat-9.0.0.M4/webapps/ROOT/WEB-INF/classes #cp 表示复制的时候如果目标目录下存在同名文件,进行强制覆盖,不再提醒 Y/N sh $startpath sleep 5s tailf -n 500 $logpath

 SVN篇 从部署服务器执行脚本,将项目部署到生产服务器

projectName=项目名称
targetMathineme=项目名称
targetMathine=目标服务器ssh链接路径
targetTomcatWebAppsDir="~/xxx-tomcat-8.0.35/webapps"
svnPath=svn地址
checkoutDir="checkout"
targetWarName=war包名
mvn scm:bootstrap -DconnectionUrl=scm:svn:$svnPath -DcheckoutDirectory=$checkoutDir -Dgoals=package -Dprofiles=skipTest,dev -DmavenHome=""
if [ -f "./$checkoutDir/target/$targetWarName.war" ]; then
echo "File xxx Generate success!"
scp $checkoutDir/target/$targetWarName.war $targetMathine:$targetTomcatWebAppsDir/$targetWarName.war.tmp
ssh $targetMathine "mv $targetTomcatWebAppsDir/$targetWarName.war.tmp $targetTomcatWebAppsDir/$targetWarName.war"
fi
echo "xxx.war publish success. "

  

原文地址:https://www.cnblogs.com/ning-blogs/p/6529980.html