Jenkins远程部署SpringBoot应用
一般Web工程通过Jenkins远程部署到Tomcat,可以采用Maven的tomcat-maven-plugin插件进行部署。最近接触到Spring Boot工程的部署,由于Spring Boot应用可以使用内部集成的服务容器(如Tomcat),此时无需按原来的方法进行部署。以工程asset_web为例,从120服务器上的Jenkins部署到121上。大致步骤:
[*]Jenkins从git上获取最新代码,编译打包;
[*]将打包好的jar包部署到121服务器上;
[*]121服务器关闭原来应用,然后启动新版本。
关键点在于最后一点,可以通过脚本进行操作。
构建部署运行
1. Jenkins配置
系统设置:
添加SSH服务器,Remote Directory指定待部署远程服务器的目标路径;勾选Use password***,输入远程服务器密码:
https://images2017.cnblogs.com/blog/1012728/201712/1012728-20171223194422834-779949888.png
工程配置:
[*]Build中配置maven命令 clean install deploy:
https://images2017.cnblogs.com/blog/1012728/201712/1012728-20171223194311881-1858192933.png
[*]在“构建后操作”中选中 Send build artifacts over SSH,配置之前添加的远程服务器:
https://images2017.cnblogs.com/blog/1012728/201712/1012728-20171223194719334-477807138.png
[*]选中121服务器,Source files指定构建后可运行的jar包,其值为相对路径:asset_web/target/asset.jar(实际路径/root/.jenkins/workspace/asset/asset_web/target);Remote Directory只需填“/”,其会引用系统配置的路径;Exec command 可指定运行脚本,此处运行restart.sh脚本,会重启spring boot 应用,启用新版本。
https://images2017.cnblogs.com/blog/1012728/201712/1012728-20171223194908568-1252109435.png
2. 重启脚本
首先关闭工程对应的进程,然后启动新版本的应用。
#restart.sh
#
!/bin/bash
echo "Restarting SpringBoot Application"
pid
=`ps -ef | grep asset.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then kill -9 $pid
echo "关闭进程:"$pid
fi
echo "授予当前用户权限"
chmod 777 /usr/src/springboot-app/asset.jar
echo "执行....."
java -jar /usr/src/springboot-app/asset.jar
碰到的问题
1. SpringBoot打包成jar后运行提示没有主清单属性
原因:maven工程没有继承spring-boot-starter-parent,其中包含maven插件spring-boot-maven-plugin(将工程打包成可执行文件,即指定MANIFEST.MF文件中Main-Class,即运行jar时的main入口)。
解决:需要在pom文件的build中添加该插件,即:
<build> <plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2. 运行jar时,内嵌Tomcat默认8080端口被占用,需要修改端口
有三种方式修改端口( Spring Boot修改内置Tomcat端口号),其中在配置文件application.properties中添加server.port=8180比较方便。
3. SpringBoot日志管理
参考SpringBoot的日志管理和boot-features-logging(后续深入研究下)
参考:
[*]https://www.cnblogs.com/niceboat/p/6230448.html
[*]https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-maven-without-a-parent
[*]Spring Boot修改内置Tomcat端口号
[*]SpringBoot的日志管理
[*]boot-features-logging
页:
[1]