Jenkins + Gitlab + Maven + Tomcat 持续集成部署 SpringBoot 应用实践

简介

本次同小伙伴们分享使用 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 代理图片路径
user  root;

# 图片映射路径
location /image {
    root   /root;
    # 打开目录索引
    autoindex on;
}
nginx 启动关闭
# 启动 nginx
/usr/local/nginx/sbin/nginx

# 停⽌Nginx服务,可执⾏
/usr/local/nginx/sbin/nginx -s stop

# 如果修改了配置⽂件后想重新加载Nginx,可执⾏:
/usr/local/nginx/sbin/nginx -s reload

# 注意其配置⽂件位于:
/usr/local/nginx/conf/nginx.conf
Tomcat 配置
配置 Tomcat 用户角色权限

默认情况下 Tomcat 是没有配置用户角色权限的

但是后续 Jenkins 部署项目到 Tomcat 服务器,需要用到 Tomcat 的用户,所以修改 tomcat 以下配置, 添加用户及权限

vim /usr/local/tomcat/apache-tomcat-8.5.55/conf/tomcat-users.xml

<tomcat-users>
    <role rolename="tomcat"/>
    <role rolename="role1"/>
    <role rolename="manager-script"/>
    <role rolename="manager-gui"/>
    <role rolename="manager-status"/>
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>
    <user username="hank" password="hank123" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>
</tomcat-users>

注意:为了能够刚才配置的用户登录到 Tomcat,还需要修改以下配置

vim /usr/local/tomcat/apache-tomcat-8.5.55/webapps/manager/META-INF/context.xml

<!--
 <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->

把上面这行注释掉即可!

配置快捷操作和开机启动

⾸先进⼊ /etc/rc.d/init.d ⽬录,创建⼀个名为 tomcat 的⽂件,并赋予执⾏权限

cd /etc/rc.d/init.d/

touch tomcat

chmod +x tomcat

接下来编辑 tomcat ⽂件,并在其中加⼊如下内容:

# !/bin/bash
# chkconfig:- 20 90
# description:tomcat
# processname:tomcat

JAVA_HOME=/usr/local/java/jdk1.8.0_161
export JAVA_HOME
TOMCAT_HOME=/usr/local/tomcat/apache-tomcat-8.5.55
export TOMCAT_HOME

case $1 in
        start) su root $TOMCAT_HOME/bin/startup.sh;;
        stop) su root $TOMCAT_HOME/bin/shutdown.sh;;
        restart)
        $0 stop
        $0 start;;
        *) echo "Usage: service tomcat start|stop|restart";;

esac

这样后续对于 Tomcat 的开启和关闭只需要执⾏如下命令即可:

service tomcat start
service tomcat stop
service tomcat restart
启动 Gitlab-CE
gitlab-ctl start

访问登录本地 gitlab:http://192.168.43.208/, 创建 shop-manager-backend 项目,上传本地代码到该仓库
在这里插入图片描述

Jenkins 配置
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 , 希望对小伙伴们有帮助哦。

参考链接

  • React 前端: https://www.bilibili.com/video/BV1eE411W7bb?p=18&t=34
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值