jenkins+gitlab实现springboot的自动化部署

系统环境

jenkins 服务器:10.199.89.***

gitlab服务器:10.199.136.***

测试应用服务器:10.199.89.***

自动化部署的流程 (如图所示便于理解 jenkins)

6861d53d37976c2126ff700bafebe2a1.png393a7f6793327e80530542eb066bc830.png

配置分析

  • 在 gitlab 服务器安装部署 gitlab 并创建项目及分支

  • 在 jenkins 服务器安装部署 jenkins

  • gitlab 需要触发 jenkins 去进行一系列的自动化操作,如何出触发呢?gitlab 上有 webhook,我们可以通过配置 webhook 当有 push 操作时通知 jenkins 进行打包部署

  • jenkins 需要拉取 gitlab 上的代码进行打包,所以 jdk,maven,git 在 jenkins 服务器是必备的

  • 最后 jenkins 通过 maven 打包好,将 jar 包发送到远程应用服务器,发送成功后运行 shell 脚本进行最后的部署工作

开始配置

第一步:配置 jenkins

  • jenkins 安装完成后,首先进行插件的下载(Jenkins 页面→Manage Jenkins→Manage Plugins)需要安装的插件有:Publish Over SSH;Maven Integration;GitLab Plugin;GitLab Hook Plugin;GitLab Authentication plugin;GitLab API Plugin;Git;Git client Plugin;Git Parameter Plug-In

    cec5cca768bf0b6737a852a6eaeca4e7.png
  • 插件安装完成后,我们进行全局的配置(Jenkins 页面→Manage Jenkins→Global Tool Configuration),其中包括 Maven、jdk、git 的配置

103823b8209e27c9ecfbaf119c6c6f08.png
  • 全局配置完成之后,进行系统配置(Jenkins 页面→Manage Jenkins→Configure System),主要是配置 ssh 服务

9dcf5713e7846cd621de1d7d2430cb59.png

我通过 http 登录的方式连接的,直接输入用户名和密码即可,也可以通过点击高级进行 ssh 方式的连接,给当前的 root 用户生成密钥,将私钥配置配置给 Jenkins 用户,将公钥配置到目标服务器

  • 这些配置完成后,我们就可以创建一个 job 了

18188e2ad5f70984a4409e57e1c2bd1c.png

b238a0e8a0e4ebd0e222f8defc11ea7d.png

因为我们需要对项目进行打包,所以我们选择构建一个 maven 项目,然后对项目进行一系列的配置

82b060b15a44ef9757e15e0416100fc2.png 071acb557d8989ee5a261a1c67bf88f2.png

源码管理这一步依赖于 gitlab 的配置,报错是因为没有配置 GitLab,gitlab 的配置我后边会写

c5d0399b437541ab906fd0310f1584e0.png

如果使用 http 的方式进行代码拉取首先确定 gitlab 服务器是否允许当前用户进行 http 的连接,最好是用 ssh 的方式

32422a344cafd5527936e1b43f543091.png 0fbd33f661c2ac48e50a195c19100b3a.png

8258bcc0e2db201e014d8265d7f281a2.png07fa755695ac232fb1a4665c9308af6b.png

pid=`ps -ef | grep Labor.jar | grep -v grep | awk '{print $2}'`
echo “旧应用进程id:$pid”
if [ -n "$pid" ]
then
kill -9 $pid
fi
cd /labor
./start.sh
npid=`ps -ef | grep Labor.jar | grep -v grep | awk '{print $2}'`
echo "新的进程 $npid:$?"
echo "启动成功!"

start.sh 的代码在后边给出,因为这里牵扯到了一个需要注意的地方

保存我们的配置,然后进行 gitlab 的配置

第二步:配置 GitLab

  • 首先我们配置在 gitlab 上配置 jenkins 生成的公钥

f4046f070bda6f2d0e807cf995d14f55.png 81adb930a701952b66ec128d4d48ad99.png 39202b4655f79b2843135f986f12287f.png
  • 最后配置 webhook

1d3aa0620a280ffab9d419e4ae1a83cb.png 946bdba89bf8ea1d8b343f9a49ffd699.png e82594139c9e926e5d6160bf2f5734c7.png 19490319537d707ce0ba25d65f5e5a80.png

这样我们自动化部署就构建完成了

遇到的坑

1、jenkins 构建成功后会杀死子进程,导致我们的 springboot 项目起不来

解决方法:这是我们调用的 start.sh 文件

export oldId=$BUILD_ID
export BUILD_ID=dontKillMe
nohup /installFile/jdk1.8.0_181/bin/java -jar Labor.jar >log.txt &
export BUILD_ID=$oldId
sleep 40

总结:

  1. 更改 BUILD_ID

  2. sleep 很重要,一定要让他睡够他启动的时间

  3. 给他指定 jvm 环境启动,否则会报 jvm 版本的错误导致启动失败


作者:Songgp1024

来源链接:

https://blog.csdn.net/songguopeng/article/details/97634829

ab75e88ec004f8e25ae70dcc39174b9a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值