背景:功能开发完成以后需要在测试服务器发布,有几种方案可选。
其中一种是使用Jenkins,而另一种是使用脚本,这次就先使用脚本。
开始以前需要准备以下环境:
$HOME/bin 目录, 用于存放脚本
$HOME/build 目录, 用于存放源码
$HOME/deploy 目录, 用于进行发布
$HOME/deploy/tomcat 目录, Tomcat目录, 可以是软链接
首先准备源码
cd $HOME/build
git clone https://github.com/ohmmx/testproject.git
准备分支存储文件,用于存放需要切换至的分支,不必每次手动切换
vim $HOME/bin/branch
填写分支名
master
保存退出 :wq
编写构建打包脚本:
vim $HOME/bin/build.sh
#!/bin/bash
branch=`cat branch`
cd $HOME/build/testproject
git fetch -p
git checkout $branch
brch=`git rev-parse --abbrev-ref HEAD`
echo -e "Publish in branch: \033[44;37m [$brch] \033[0m"
git pull --all
gradle clean :prj-tomcat:war :prj-springboot:bootJar
在构建时会已蓝底白字显示当前切换至的分支,避免分支填写出错。
其中Tomcat项目打包为war包,SpringBoot项目打包为Jar包。
编写Tomcat项目启动脚本:
其中8080为启动端口,可以在 $HOME/deploy/tomcat/conf/server.xml 的 Connector protocol=”HTTP/1.1″ 部分找到并设置
vim $HOME/bin/start-tomcat.sh
#!/bin/bash
# 停止服务
fuser -k 8080/tcp || true
rm -rf $HOME/deploy/tomcat/webapps/ROOT
rm -f $HOME/deploy/tomcat/webapps/ROOT.war
cp $HOME/build/testproject/prj-tomcat/build/libs/prj-tomcat.war $HOME/deploy/tomcat/webapps/ROOT.war
cd $HOME/deploy/tomcat/bin/
./startup.sh
编写SpringBoot项目启动脚本:(其中9081为启动端口)
vim $HOME/bin/start-springboot.sh
#!/bin/bash
# 停止服务
fuser -k 9080/tcp || true
rm -f $HOME/deploy/prj-springboot.jar
cp $HOME/build/testproject/prj-springboot/build/libs/prj-springboot.jar $HOME/deploy/
nohup java -Dserver.port=9080 -jar $HOME/deploy/prj-springboot.jar
进阶版-Tomcat篇:
Tomcat设置内存大小:
vim $HOME/deploy/tomcat/bin/setenv.sh
#!/bin/bash
CATALINA_OPTS=" -Xms512m -Xmx512m"
Tomcat设置JPDA启动:
vim $HOME/deploy/tomcat/bin/catalina.sh
在开头的一堆注释下面加入以下一行:(其中28080为JPDA端口)
JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=28080,server=y,suspend=n"
然后使用JPDA方式启动:
vim $HOME/deploy/tomcat/bin/startup.sh
最后一行
exec "$PRGDIR"/"$EXECUTABLE" start "$@"
修改为
exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"
进阶版-SpringBoot篇:
设置启动内存,添加参数 -Xmx1024m
设置指定profile配置启动 -Dspring.profiles.active=dev
避免打印nohup日志,在脚本最后添加 > /dev/null 2>&1 &
使用JPDA方式启动 -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=29080
所以最终的结果是这样的:
普通启动
#!/bin/bash
# 停止服务
fuser -k 9080/tcp || true
rm -f $HOME/deploy/prj-springboot.jar
cp $HOME/build/testproject/prj-springboot/build/libs/prj-springboot.jar $HOME/deploy/
nohup java -Xmx1024m -Dspring.profiles.active=dev -Dserver.port=9080 -jar $HOME/deploy/prj-springboot.jar > /dev/null 2>&1 &
JPDA启动
#!/bin/bash
# 停止服务
fuser -k 9080/tcp || true
rm -f $HOME/deploy/prj-springboot.jar
cp $HOME/build/testproject/prj-springboot/build/libs/prj-springboot.jar $HOME/deploy/
nohup java -Xmx1024m -Dspring.profiles.active=dev -Dserver.port=9080 -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=29080 -jar $HOME/deploy/prj-springboot.jar > /dev/null 2>&1 &