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***,输入远程服务器密码:

工程配置:
- 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 - $pid
echo "关闭进程:"$pid
fi echo "授予当前用户权限"
chmod /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
Jenkins远程部署SpringBoot应用的更多相关文章
- [原]jenkins(六)---jenkins远程部署脚本
/** * lihaibo * 文章内容都是根据自己工作情况实践得出. * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/533 ...
- publish over ssh 实现 Jenkins 远程部署
Jenkins远程部署,一开始没有任何头绪,想了很多方案. 因为两台机器都是windows系统,所以想到publish over cifs, 但是这个网上资料太少,貌似只能内网使用.又想到了Jenki ...
- Jenkins自动部署springboot项目
说明: 该示例为在windows系统下自动化部署springboot 架构: springboot + github + gradle + jdk8 各种配置步骤及截图说明: 1.配置git,grad ...
- Jenkins Pipeline 部署 SpringBoot 应用
一. 安装依赖包 yum install -y wget yum install -y gcc-c++ yum install -y zlib-devel perl-ExtUtils-MakeMake ...
- 使用Jenkins远程部署war包到tomcat container
Jenkins首先使用maven将源代码进行编译打包,之后需要将war包传送到tomcat服务器上进行部署. 来看一下Jenkins的基本配置,首先需要安装插件"Deploy to cont ...
- IDEA 集成 Docker 插件实现一键远程部署 SpringBoot 应用,无需三方依赖,开源微服务全栈项目有来商城云环境的部署方式
一. 前言 最近有些童鞋对开源微服务商城项目 youlai-mall 如何部署到线上环境以及项目中 的Dockerfile 文件有疑问,所以写了这篇文章做个答疑以及演示完整的微服务项目发布到线上的流程 ...
- jenkins流水线部署springboot应用到k8s集群(k3s+jenkins+gitee+maven+docker)(1)
前言:前面写过2篇文章,介绍jenkins通过slave节点部署构建并发布应用到虚拟机中,本篇介绍k8s(k3s)环境下,部署jenkins,通过流水线脚本方式构建发布应用到k8s(k3s)集群环境中 ...
- 利用Jenkins打包并远程部署SpringBoot应用
本文Jenkins版本2.190.2,为19年11月最新 1.安装Jenkins.Git.Maven和JDK Jenkins安装参考:https://www.cnblogs.com/zhi-leaf/ ...
- Linux配置AndroidSDK&Jenkins远程部署
最近将公司的项目部署了Jenkins持续集成,遇到了几个麻烦的点,其中之一就是将Android SDK进行配置在远程服务器(总结下来还是自己对Linux命令还不够熟悉),特此记录. 系统: Ubunt ...
随机推荐
- 利用KindEditor实现公司通讯录的维护
引言: 本人所属施工单位,在建项目较多,通讯录是以项目为单位挂接在公司内部网站通讯录板块,以静态页面展示.一直以来都是项目部办公室通过电话.邮件等方式通知总部信息部门变更通讯录,日常维护的工作量较大. ...
- Scala入门系列(十):函数式编程之集合操作
1. Scala的集合体系结构 Scala中的集合体系主要包括(结构跟Java相似): Iterable(所有集合trait的根trait) Seq(Range.ArrayBuffer.List等) ...
- 选择客栈noip2011
哈,没想到吧.今天居然有两篇(算什么,厕所读物吗 选择客栈 本题的更优解请跳转zt 这题11年,刚改2day. 对于30% 的数据,有 n ≤100: 对于50% 的数据,有 n ≤1,000: 对于 ...
- dubbo源码—dubbo自定义spring xml标签
dubbo为了和spring更好的集成,提供了一些xml配置标签,也就是自定义标签 spring自定义标签 spring自定义标签的方式如下: 设计配置属性和JavaBean 编写xsd文件,校验xm ...
- springMVC(1)---@RequestMapping详解
@RequestMapping详解 RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径.这句话,太熟悉了. ...
- WIN7下安装SVNserver端及client搭建协作环境
一.客户场景: 客户现场须要在虚拟机上封闭开发,所以须要搭建一个SVN协作开发环境.客户提供了一台全新的裸机安装的操作系统是WIN7旗舰版64位. 二.SVNserver搭建 1. SVNserver ...
- Go语言核心之美-必读
Go语言核心之美开篇了!.不管你是新手还是一代高人,在这个系列文章中.总能找到你想要的! 博主是计算机领域资深专家并且是英语专8水平,翻译标准仅仅有三个:精确.专业.不晦涩,为此每篇文章可能都要耗费数 ...
- [NOIP复习]第三章:动态规划
一.背包问题 最基础的一类动规问题.相似之处在于给n个物品或无穷多物品或不同种类的物品,每种物品仅仅有一个或若干个,给一个背包装入这些物品,要求在不超出背包容量的范围内,使得获得的价值或占用体积尽可能 ...
- Ubuntu下搜狗拼音突然无法输入中文的解决办法
搜狗输入法前段时间还可以正常使用,突然今天无法输入中文了.这种情况在Ubuntu中非常常见,可能的原因有3个:1.可能依赖有问题.2.配置文件出错了.3运行出错,需要重新启动一下. 因为我的这个是突然 ...
- 《程序设计语言——实践之路【PDF】下载
<程序设计语言--实践之路[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382240 内容简介 <程序设计语言--实践之路(第3版 ...