简介
本次同小伙伴们分享使用 Jenkins + Gilab + Maven 来自动化部署一个 Spring Boot 应用,架构图如下:

该 Spring Boot 应用是一个简单的商品后台管理应用,采用了 Spring Security + JWT + MySql, 前端采用了 React 构建,放在 classpath:/resources/static 目录下,商品图片上传到本地目录下通过 nginx 代理访问。后端代码结构如下:
环境准备
本次自动化构建准备环境如下:
- 安装 CentOs7 VM1, IP: 192.168.43.206(1 核 2G)
- 安装 CentOs7 VM2, IP: 192.168.43.208(1 核 3G)
- 安装 JDK1.8(192.168.43.206)
- 安装 Git(192.168.43.206)
- 安装 Maven(192.168.43.206)
- 安装 Mysql(192.168.43.206)
- 安装 Jenkins(192.168.43.206)
- 安装 Tomcat(192.168.43.206)
- 安装 Nginx(192.168.43.206)
- 安装 Gitlab-CE(192.168.43.208)

使用 FinalShell 连接这两台 VM。

关于具体安装,这些网上都有许多详细的教程,不再具体展开安装说明。
nginx 配置
配置 nignx 代理图片路径
1 | user root; |
nginx 启动关闭
1 | # 启动 nginx |
Tomcat 配置
配置 Tomcat 用户角色权限
默认情况下 Tomcat 是没有配置用户角色权限的
但是后续 Jenkins 部署项目到 Tomcat 服务器,需要用到 Tomcat 的用户,所以修改 tomcat 以下配置, 添加用户及权限
vim /usr/local/tomcat/apache-tomcat-8.5.55/conf/tomcat-users.xml
1 | <tomcat-users> |
注意:为了能够刚才配置的用户登录到 Tomcat,还需要修改以下配置
vim /usr/local/tomcat/apache-tomcat-8.5.55/webapps/manager/META-INF/context.xml
1 | <!-- |
把上面这行注释掉即可!
配置快捷操作和开机启动
⾸先进⼊ /etc/rc.d/init.d ⽬录,创建⼀个名为 tomcat 的⽂件,并赋予执⾏权限
1 | cd /etc/rc.d/init.d/ |
接下来编辑 tomcat ⽂件,并在其中加⼊如下内容:
1 | # !/bin/bash |
这样后续对于 Tomcat 的开启和关闭只需要执⾏如下命令即可:
1 | service tomcat start |
启动 Gitlab-CE
1 | gitlab-ctl start |
访问登录本地 gitlab:http://192.168.43.208/, 创建 shop-manager-backend 项目,上传本地代码到该仓库
Jenkins 配置
1 | systemctl start jenkins |
启动 Jenkins, 访问登录本地 Jenkins:
http://192.168.43.206:8500/, Jenkins 插件通常安装不了,可参考我另一篇博文安装插件, 这里我已经安装好了。

全局工具配置
在 Jenkins -> Global Tool Configuration 下, 配置 JDK, Git, 和 Maven

添加 Jenkins 全局变量
在 Jenkins -> Configure System 下,添加全局变量

添加 Gitlab API Token
在 Jenkins -> Configure System 下,添加 API Token
新建一个自由风格项目

General
GitLab Connection: 选择前面添加的 Gitlab API Token
源码配置:
Repository URL: git@192.168.43.208:yekongle/shop-manager-backend.git
Credentials: 配置一个访问 gitlab 的凭据

构建触发器配置
主要是要配置一个 webhook,这个 webhook 会触发 jenkins 拉取 gitlab 上的代码

构建
通过 maven 构建项目,写 maven 的构建命令
构建后操作
构建完毕后,将生成的项目 war 包放到 tomcat 容器中运行
这里的 Credentials 选择事先添加好的访问 Tomcat Web 应用程序管理的账号密码凭据

部署测试
当有代码提交到 master 分支时,jenkins 就会重新构建部署该项目
查看控制台输出如下,可以看到重新构建的 war 包被部署到了 Tomcat 下:

进入 Tomcat 应用管理控制台,可看到该应用并且已经启动了
访问该项目

输入账号密码登录


后端项目代码已上传至 Github: https://github.com/yekongle/springboot-code-samples/tree/master/shop-manager-backend , 希望对小伙伴们有帮助哦。