使用 Jenkins 自动部署 SpringBoot 项目

涉及到的工具与软件:Idea、Linux、Docker、Natapp、Jenkins、Gitee、Nginx、VMware虚拟机

一、准备SpringBoot项目代码

测试项目中仅有一个Hello接口,上传至Gitee仓库中
我的仓库地址:https://gitee.com/xxxx/jenkins-boot.git

二、Linux 服务器环境准备

由于没有单独的Linux服务器,所以我使用虚拟机搭建了一个CentOS 7的服务器,并且再服务器内安装了docker

2.1 docker 安装

使用脚本自动安装,CentOS 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:

# 拉取 get-docker.sh 文件
curl -fsSL get.docker.com -o get-docker.sh
# 安装
sh get-docker.sh --mirror Aliyun

一些简单的 docker 命令:

设置 Docker 服务开启自启动: systemctl enable docker
启动 Docker 服务:systemctl start docker
测试 Docker 是否安装正常(启动一个 hello-world 镜像):docker run hello-world
重启 Docker 服务:systemctl restart docker
停止 Docker 服务:systemctl stop docker
查看版本信息:docker version
查看详细信息:docker info
查看帮助信息:docker --help

2.2 Jenkins 搭建

为了操作方便,将 Jenkins 的工作目录映射到我的宿主机中来,因此首先在宿主机中准备一个数据目录:

# 创建 jenkins 目录
mkdir /data/jenkins_home/
# 修改目录的所有者,便于 Jenkins 容器能够操作该目录
chown -R 1000:1000 /data/jenkins_home/

接下来创建并且后台启动 Jenkins 容器,与宿主机中进行端口映射,并且挂载数据卷:

docker run -d --name jenkins -p 8088:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins

安装成功后,浏览器中输入 http://ip:8088 就能访问了。在这里插入图片描述
稍等片刻,即将出现密码认证
在这里插入图片描述
通过提示直接在宿主机挂载目录中找到 initialAdminPassword 文件,查看初始化密码,输入密码后然后继续。
在这里插入图片描述
插件安装,这里直接安装推荐的插件即可。
在这里插入图片描述
如果因为网络原因安装失败,可以点击重试按钮进行重试。
接下来是用户创建,直接使用admin用户即可
在这里插入图片描述
再设置 Jenkins 的访问地址:
在这里插入图片描述
直接默认保存并完成即可。

安装必要的插件: Maven Integration 和 Publish Over SSH 以及 Gitee 三个插件
Maven Integration:Maven 构建工具
Publish Over SSH:整个工具,将来把 Jenkins 打包好的 jar 上传到应用服务器上。
Gitee:协助使用 Gitee 仓库。
安装步骤如下:
1、点击左边的系统管理,然后点击右边的插件管理。
在这里插入图片描述
2、在可选插件中,依次搜索 Maven Integration 和 Publish Over SSH 以及 Gitee 三个插件,搜索完成后,点击 Install without restart。
在这里插入图片描述
3、安装完成后在服务器上执行 docker restart jenkins 重启jenkins,有的插件需要重启之后才会生效。
配置 Jenkins

  • 基本环境配置: 包括 JDK、Maven、Git
    在这里插入图片描述

1、首先配置 JDK,Jenkins 中默认安装了 JDK,我们只需要将其配置配出来即可:
在这里插入图片描述
别名可随意取,JAVA_HOME 则根据实际情况配置。

2、其次是 Maven 配置,将宿主机中的Maven目录拷贝到 Jenkins 容器中

将宿主机中的 maven 目录拷贝到 jenkins 容器中的 /opt/ 目录下
docker cp apache-maven-3.8.6 jenkins:/opt/

注意:maven中的配置文件,远程仓库地址修改为阿里云的,否则打包时连接国外的远程仓库会很慢。
在这里插入图片描述
Maven 就是我们刚刚上传到 docker 容器中的 Maven,配置一下路径即可,Jenkins 将来会自动从 Gitee 上将代码拉下来,然后就利用你这里配置的 Maven 进行项目构建,名字随意取,MAVEN_HOME 则是前面刚刚上传到容器中的 Maven 目录。

3、最后配置Git
配置 Git,由于 Jenkins 容器中已经存在 git 了,所以这里不需要额外安装 git,默认即可。
在这里插入图片描述
所有基本环境都配置完成,点击保存按钮即可

  • 远程的凭证配置:需要配置两个远程登录凭证,应用服务器与Gitee仓库信息。
    在这里插入图片描述
    1、应用服务器与就是将来 Jenkins 将代码构建成 jar 包后,要上传的服务器的信息(地址、用户名以及密码)
    进入系统配置后,往下拉在底部找到 Publish Over SSH,然后点击新增,开始配置,Hostname 位置填写服务器的域名或者 IP,我这里直接填写宿主机中的ip:
    在这里插入图片描述
    配置成功后,点击测试连接进行测试,确保连接是成功的。
    在这里插入图片描述
    2、配置 Gitee 的信息
    在这里插入图片描述
    首先配置仓库的基本信息,配置 Gitee 的凭证,要根据凭证,才能从 Gitee 上拉取代码下来,点击 添加 -> Jenkins,添加凭证:
    在这里插入图片描述
    添加成功之后,就可以选择这个令牌了。最后点击测试连接,确保可以连上 Gitee。
    在这里插入图片描述
    所有配置工作都做完了,接下来就可以开始构建一个项目了。

项目构建
1、新建任务
在这里插入图片描述
2、构建一个 Maven 项目
在这里插入图片描述
3、确定后到源码管理位置,开始配置
在这里插入图片描述
首先选择 Git,填入 Gitee 上的仓库地址,然后添加凭证就写 Gitee 的用户名/密码(这里使用Gitee API 私人令牌无效)。
在这里插入图片描述
默认的分支名称 master,按你实际的情况填写。
在这里插入图片描述
构建环境勾上 Add timestamps to the Console Output ,加上时间,我们看下打印的过程。
接下来输入项目构建命令,将来 Jenkins 从 Gitee 上拉取代码下来之后,就执行该命令对项目进行打包:
在这里插入图片描述
最后,配置上传构建好的文件,并执行启动命令,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据上图的配置,我们使用 root 用户登录,root 登录成功之后,默认进入到 /root 目录下,接下来会自动进入到 data 目录,然后我们的 jar 包就上传到这个目录位置上。

然后我们在应用服务器上也提前准备好一个 shell 脚本叫做 deploy.sh,位于 /root/data 目录下,这个脚本内容如下:

export JAVA_HOME=/opt/java
export PATH=$JAVA_HOME/bin:$PATH

JAR_PATH=/root/data

JARFILE=jenkins-boot-1.0-SNAPSHOT.jar

ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9

java -jar $JAR_PATH/$JARFILE > out.log &
if [ $? = 0 ];then
        sleep 30
        tail -n 50 out.log
fi

前面先配置一下环境变量,注意这个是应用服务器的环境变量,不是 Jenkins 的。然后先检查一下,如果应用程序已经在运行了,就先将之停止掉。然后运行我们最新的 jar 即可。

另外,可以开启 SSH 操作日志,开启日志之后,就可以看到 Jenkins 中操作应用服务器其的过程了,特别是大家第一次配置的时候,容易出错,配置了日志,将来出错就知道什么原因导致的错误了

配置方式如下图:
在这里插入图片描述
至此,这个项目就配置完成了。

保存之后,点击立即构建按钮,就可以开始构建了:
在这里插入图片描述
开始构建之后,可以点击状态按钮,查看构建历史过程:
在这里插入图片描述
选择其中一个构建历史,点击控制台输出,可以查看整个构建过程:
在这里插入图片描述
构建完成后,来到应用服务器,执行 jps 命令查看运行的 Java 进程,就可以看到我们的应用程序已经跑起来了。

自动构建
现在我们的项目还不是自动构建,也就是当我们向 Gitee 上的代码仓库提交代码之后,并不会触发 Jenkins 的自动构建,得我们手动点击构建按钮,接下来我们再来继续配置,实现自动触发构建。

为了实现自动触发构建,我们需要修改两个地方。
1、修改 Jenkins 的当前项目中,配置一下触发构建的规则
在这里插入图片描述
网页上 Jenkins 已经给出了将来要配置的 Webhook 的地址了,大家直接拷贝该地址即可,需要外网能够访问,由于使用虚拟机搭建的服务器,所以我通过natapp外网访问到本机,在本机上通过Nginx跳转到虚拟机内Jenkins。

2、配置 Webhook
接下来在 Gitee 的项目中,配置 WebHook,在当前项目中,选择管理选项卡,左边菜单点击 WebHooks,然后点击添加 WebHook。
在这里插入图片描述
由于 Jenkins 是要登录之后才可以操作的,处于公网的 Jenkins 我们也不能降至设置为匿名访问,所以这里我们将 Jenkins 的用户名密码放在请求地址中,最终地址类似这样:http://username:password@11.11.11.11:8088/xxxx。

配置完成后,接下来向 Gitee 代码仓库提交代码,提交成功之后,查看是否发送请求是否会触发 Jenkins 自动构建功能即可。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值