「项目部署」使用Jenkins一键打包部署SpringBoot应用
ahcoder 2025-05-10 19:24 16 浏览
前言
嗨,大家好,我是希留,一个被迫致力于全栈开发的老菜鸟。
一般而言,一个项目部署的由:拉取代码->构建->测试->打包->部署等过程组成,如果我们经常需要部署项目,特别是在微服务时代,服务特别多的情况下,不停的测试打包部署,那估计得有个人一整天专门做这事了,而这事又是繁琐的重复无意义的,所以就需要一套能够持续集成、持续交付、持续部署的自动化构建流程。
Jenkins是开源CI&CD软件领导者,提供超过1000个插件来支持构建、部署、自动化,满足任何项目的需要。我们可以用Jenkins来构建和部署我们的项目,比如说从我们的代码仓库获取代码,然后将我们的代码打包成可执行的文件,之后通过远程的ssh工具执行脚本来运行我们的项目。
一、准备工作
真正的生产环境上,可能是有多台服务器,但是我是用来练手,手头没有多余的服务器,只有一台。所以我就将 Jenkins 和我的 Spring Boot 项目都部署到一台服务器上。
由于本次是使用Docker安装Jenkins,所以需要服务器上提前安装好JDK,Maven,Doker三个必备的环境配置。这里就不过多赘述这三个环境的安装了,可以自行查询资料安装。
- 检查 JDK 环境
java -version
- 检查 Maven 环境
mvn -v
- 检查 Docker 环境
docker version
二、Jenkins的安装及配置
1. Docker环境下的安装
- (1)下载Jenkins的Docker镜像:
docker pull jenkins/jenkins:lts
- (2)在Docker容器中运行Jenkins:
docker run -p 9080:8080 --name xiliu-jenkins \
-u root \
-v /mydata/jenkins_home:/var/jenkins_home \
-v /usr/local/jdk1.8.0_321:/usr/local/jdk1.8 \
-v /usr/local/apache-maven-3.8.6:/usr/local/apache-maven-3.8.6 \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-d jenkins/jenkins:lts
- 参数说明
参数 | 说明 |
-p 9080:8080 | 端口映射(将容器的8080端口【后面的8080】映射到服务器的9080端口【前面的9080】,云服务器需要开通9080端口供外网访问) |
--name | 容器名字 |
-u root | 用户名 |
-v /mydata/jenkins_home:/var/jenkins_home | 将配置文件夹挂在到主机(:前面的是主机目录,后面的是容器目录) |
-v /usr/local/jdk1.8.0_321:/usr/local/jdk1.8 | 是把linux下的jdk和容器内的关联(配置Jenkins时使用,:前面的是主机目录,后面的是容器目录) |
-v /usr/local/apache-maven-3.8.6:/usr/local/apache-maven-3.8.6 | 是把linux下的maven和容器内的关联(配置Jenkins时使用,:前面的是主机目录,后面的是容器目录) |
-v $(which docker):/usr/bin/docker | 是可以在Jenkins容器里使用我们Linux下的docker |
-v /var/run/docker.sock:/var/run/docker.sock | 是可以在Jenkins容器里使用我们Linux下的docker |
-d jenkins/jenkins:lts | 后台启动 Jenkins镜像(最新版) |
2. Jenkins的配置
- (1)运行成功后访问该地址登录Jenkins,第一次登录需要输入管理员密码:http://你的ip:8080/
- (2)使用管理员密码进行登录,可以使用以下命令从容器启动日志中获取管理密码:
docker logs xiliu-jenkins
- 从日志中获取管理员密码:
- (3)输入管理员密码后,就进入安装界面,选择安装插件方式,这里我们直接安装推荐的插件:
- (4)进入插件安装界面,联网等待插件安装:
- (5)安装完成后,创建管理员账号:
- (6)进行实例配置
- (7)点击保存并完成,Jenkins就安装已完成
- (8)进入Jenkins,点击系统管理->插件管理,进行一些自定义的插件安装:修改插件的站点,把原站点:https://updates.jenkins.io/update-center.json 改为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,可以更快的下载插件。
确保以下插件被正确安装,未安装的在可选插件中搜索安装即可: (1)根据角色管理权限的插件:Role-based Authorization Strategy (2)把 Jenkins 打包好的 jar 上传到应用服务器上:Publish Over SSH
安装完成后需要重启一下jenkins,在连接后面加restart就可以重启jenkins了,或者使用命令:docker restart 容器名字
- (9)配置jdk和maven,通过系统管理->全局工具配置来进行全局工具的配置,路径都是jenkins里面的路径
- (9)在系统管理->系统配置中,往下拉找到 Publish Over SSH,配置好要连接的应用服务器(在后面的操作中需要使用jenkins远程ssh连接到应用服务器,进行构建后的应用部署运行。用户名密码会导致 jar 包上传失败,要在应用服务器上生成 ssh 密钥对。不会生成服务器SSH密钥的可以自行查询资料生成一下。)这样Jenkins使用ssh就可以执行远程的linux脚本了:
- (10)进入系统管理->凭据中,添加Gitee登录账号凭据。接下来配置 Gitee 的凭证,要根据这些凭证,才能从 Gitee 上拉取代码下来:所有配置工作都做完了,接下来我们就可以开始构建一个项目了。
三、打包部署SpringBoot应用
因为我的源码是在Gitee上,所以这里以Gitee示例:
2.1 在Jenkins中创建执行任务
- (1)首先我们需要新建一个任务:
- (2)设置任务名称后选择构建一个自由风格的软件项目:
2.2 添加git凭据
添加Gitee登录账号凭据。接下来配置 Gitee 的凭证,要根据这些凭证,才能从 Gitee 上拉取代码下来。(如果前面添加了凭证,这里直接选择就行)
- (3)填写完成后选择该凭据,就可以正常连接git仓库了;
2.3 添加maven构建
- 选择我们的maven版本,然后设置maven命令和指定pom文件位置:
2.4 增加构建后操作步骤
因为前面运行jenkins的时候已经做了目录的映射,所以jenkins打完包后其实是会把包同步到服务映射的目录里的。所以这里不需要上传jar包,直接执行xshell命令,进入jar包的目录,执行jar包即可。
- shell脚本:
#第一步是进入到服务器中生成好的jar包的目录下
cd /mydata/jenkins_home/workspace/xiliu-admin/xiliu-ucenter/target/
#第二步是根据jar包的名字获取运行的pid,并且将该进程杀死
ps -ef | grep xiliu-ucenter-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{printf $2}' | xargs kill -9
#执行 前加载一下环境变量,否则不会执行java -jar 命令
source /etc/profile
#最后一步就是将这个jar后台启动了,并且将日志输出到warpper.log中。
nohup java -jar xiliu-ucenter-0.0.1-SNAPSHOT.jar >warpper.log &2>1 &
#睡眠1秒
sleep 1
#输出内容,可不加
echo "启动完成"
2.5 立即构建
配置完成后,点击立即构建,可以看到控制台输出成功。
2.6 测试
访问项目地址,能够正常访问。大功告成
总结
以上就是本文的全部内容了,感谢大家的阅读。
如果觉得文章对你有帮助,还不忘帮忙点赞、收藏、关注、评论哟,您的支持就是我创作最大的动力!
相关推荐
- Nginx的http块sendfile,keepalive_timeout的配置指令说明,
-
sendfile是用来设置Ngnix服务的一种静态资源的写法sendfile:用来设置Nginx服务器是否使用sendfile()传输文件,该属性可以大大提高Nginx处理静态资源的性能这里send...
- Docker安装和配置Nginx(docker-compose部署nginx)
-
下载镜像dockerpullnginx检查Nginx镜像dockerimages创建挂载目录mkdir-p/home/docker-nginx/confmkdir-p/home/doc...
- 记:Nginx 如何配置SSL证书(nginx添加ssl证书)
-
引言最近,有几个其他项目团队的同事问了我几个类似问题:“钦哥,我们微信小程序微信支付,怎么回调不没反应?”“钦哥,我们的项目怎么无法通过https访问的?”然后就有想把配置ssl证书的过程,记录一...
- 多项目nginx部署配置(nginx多站点配置示例)
-
在前后端分离的项目中,前端部署大部分都采用nginx部署。在我参与的一个项目中,后台管理前端和业务应用前端是作为两个独立项目开发的。以往部署时通过不同端口来访问这两个项目,这就导致前端存储的token...
- NGINX最佳缓存配置策略(nginx最佳缓存配置策略有哪些)
-
Nginx可以配置的参数有很多,今天我们来看一下Nginx的缓存如何配置。no-cache和no-store“no-cache”表示必须先与服务器确认返回的响应是否发生了变化,然后才能使用该响应来满足...
- 通过 docker 学习 nginx,附全部配置及 API 测试,使用 apifox 直接打开
-
本篇文章以前端的视角,介绍下nginx的常见配置,并通过docker的方式学习nginx,这保证所有实例配置都能正常运行。我将本文所有关于docker/nginx的配置放置在simple...
- nginx配置负载均衡 以及宕机了后,怎么配置高可用
-
Nginx负载均衡配置是一个分发请求的过程。可以通过将同一个服务的多个实例配置到不同的服务器上,通过Nginx代理请求,将请求分发到这些实例上实现负载均衡。下面详细介绍Nginx负载均衡的配置过程和宕...
- nginx反向代理加https证书和自动跳转配置
-
nginx反向代理加https证书和自动跳转配置如果对运维课程感兴趣,可以在b站上搜索我的账号:运维实战课程,可以关注我,学习更多免费的运维实战技术视频1.机器规划:nginx代理机器:192.16...
- 【Nginx基础】Nginx常见负载均衡策略配置示例
-
下面是一些常用的Nginx负载均衡策略及其配置示例:轮询(RoundRobin)这是默认的负载均衡策略,它将请求依次分配给不同的后端服务器。upstreambackend{server...
- nginx中配置固定的JSON响应(nginx指定conf)
-
前提在进行性能测试时,使用mock接口是一种非常有效的方法,可以帮助您模拟真实服务的行为,从而避免对外部系统的依赖。使用Nginx作为mock接口的返回源不仅可以快速配置,还能确保mock接口本身不...
- Nginx基本安全配置(防盗连、隐藏版本号、防嵌套等)
-
在生产环境中nginx有很多安全方案,我在为生产环境部署中得到很多经验,收集到的一些常用配置,简单记录一下。安装Nginx正常安全Nginx大家应该都会,但是各位要知道在安全要求很高的生产环境中,是无...
- nginx如何配置跨域(nginx配置解决跨域)
-
要在Nginx中配置跨域,可以使用add_header指令来添加Access-Control-Allow-*头信息,如下所示:location/api{if($reques...
- Nginx合集-限流配置方案参考(nginx lua限流)
-
Nginx为我们提供了请求限制模块(ngx_http_limit_req_module)、基于令牌桶算法的流量限制模块(ngx_stream_limit_conn_module),可以方便的控制令牌速...
- 韩国站群服务器Nginx反向代理多IP配置指南
-
在站群服务器的运营中,Nginx反向代理技术如同一座智能调度中心,既能隐藏真实服务器架构,又能实现流量精准分发。尤其对于部署在韩国数据中心的站群而言,合理配置多IP反向代理,可显著提升SEO安全性与服...
- Nginx配置前后端服务(nginx配置前端页面部署)
-
nginx安装完成后,可以通过命令查看配置文件nginx-t配置文件nginx.conf,是总的配置,有的人会把配置全部配置到这个文件中,如果服务很多,这个文件变得非常庞大,我见过一个配置很大的,在...
- 一周热门
- 最近发表
-
- Nginx的http块sendfile,keepalive_timeout的配置指令说明,
- Docker安装和配置Nginx(docker-compose部署nginx)
- 记:Nginx 如何配置SSL证书(nginx添加ssl证书)
- 多项目nginx部署配置(nginx多站点配置示例)
- NGINX最佳缓存配置策略(nginx最佳缓存配置策略有哪些)
- 通过 docker 学习 nginx,附全部配置及 API 测试,使用 apifox 直接打开
- nginx配置负载均衡 以及宕机了后,怎么配置高可用
- nginx反向代理加https证书和自动跳转配置
- 【Nginx基础】Nginx常见负载均衡策略配置示例
- nginx中配置固定的JSON响应(nginx指定conf)
- 标签列表
-
- linux 远程 (37)
- u盘 linux (32)
- linux 登录 (34)
- linux 路径 (33)
- linux 文件命令 (35)
- linux 是什么 (35)
- linux 界面 (34)
- 查看文件 linux (35)
- linux 语言 (33)
- linux代码 (32)
- linux 查看命令 (33)
- 关闭linux (34)
- root linux (33)
- 删除文件 linux (35)
- linux 主机 (34)
- linux与 (33)
- linux 函数 (35)
- linux .ssh (35)
- cpu linux (35)
- 查看linux 系统 (32)
- linux 防火墙 (33)
- linux 镜像 (34)
- linux ip地址 (34)
- linux 用户查看 (33)
- nginx配置 解析 (37)