设为首页 收藏本站
查看: 1159|回复: 0

[经验分享] Jenkins远程部署SpringBoot应用

[复制链接]

尚未签到

发表于 2018-1-8 23:10:38 | 显示全部楼层 |阅读模式
  一般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***,输入远程服务器密码:

  工程配置:


  • Build中配置maven命令 clean install deploy:



  • 在“构建后操作”中选中 Send build artifacts over SSH,配置之前添加的远程服务器:



  • 选中121服务器,Source files指定构建后可运行的jar包,其值为相对路径:asset_web/target/asset.jar(实际路径/root/.jenkins/workspace/asset/asset_web/target);Remote Directory只需填“/”,其会引用系统配置的路径;Exec command 可指定运行脚本,此处运行restart.sh脚本,会重启spring boot 应用,启用新版本。


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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433089-1-1.html 上篇帖子: jenkins之角色授权[六] 下篇帖子: Jenkins SSH timeout
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表