从零实现DevOps(四):Jenkins+GitLab自动化部署SpringBoot项目(Jenkins本地环境+Jar包模式)

从前三篇文章中,我们已经实现了gitlab、jenkins项目的安装与基础配置,并且给Centos7操作系统搭配了jdk、maven等环境变量。从这边文章起,“从零实现DevOps”系列,将正式开始利用Jenkins+Gitlab的完美结合,一步步实现全栈项目的持续集成和持续部署(CI/CD),以后也会引入Docker+Dockerfile+docker-compose的方式去实现快速部署。那么,第一篇文章先传统的SpringBoot项目开刀,在Jenkins本地环境中用jar包的方式简单实现一下,开始吧!!!

一、Jenkins插件和全局环境配置

1、Jenkins设置中文(部分版本不生效,跳过此步骤也可以)

  1. 点击Jenkins首页中的Manage Jenkins,进入系统设置

  2. 点击Plugins,进入插件中心
    在这里插入图片描述

  3. 选择Available Plugins,搜索Locale,勾选后,点击Install without restart(安装无需重启)
    在这里插入图片描述

  4. 等待安装完毕后返回首页
    在这里插入图片描述

  5. 再次点击Manage Jenkins,点击System,进入系统配置

  6. 往下拉,找到Locale,输入框中输入“zh_CN”,勾选下边的按钮(忽略浏览器首选项并向所有用户强制使用此语言),点击保存返回首页 在这里插入图片描述

  7. 地址栏后边加上“/restart”后刷新网址,重启Jenkins 在这里插入图片描述在这里插入图片描述

  8. 等待重启后成功

2、Jenkins安装Maven、GitLab等插件

  1. 与安装中文插件同理,依次搜索安装MavenGitLab插件 在这里插入图片描述
    在这里插入图片描述
  2. 为了万无一失,全部安装后,再次重启一下Jenkins

3、配置GitLab系统凭据

可能是因为版本问题,我点击系统级的Credentials时,并没有添加凭据的地方,所以,我选择在添加Gitlab地址的地方添加令牌

  1. 点击Manage Jenkins,点击System,进入系统配置
  2. 往下拉,找到GitLab,其他不需要填写,点击添加,再点击弹出的Jenkins图标 ,进行配置凭据 在这里插入图片描述
  3. 配置Credentials(ID和描述可填可不填,知道即可),点击添加即可,返回首页(弹框点击
    Username with password
    最简单的凭证类型,字面理解即可掌握精髓,就是保存用户名和密码。 在这里插入图片描述
  4. 返回首页,在系统的Credentials中,查看配置的凭据 在这里插入图片描述
  5. 红框的就是你刚才添加的凭据,还可以点进去进行修改账号密码操作 在这里插入图片描述
    点击Change Password可以修改密码 在这里插入图片描述

4、配置Maven环境变量

  1. 点击Manage Jenkins,点击Tools(有些版本的jenkins也叫Global Config),进入工具配置
  2. 往下拉找到Maven,点击新增Maven
  3. 取消勾选Install automatically,用我们自己的Maven版本 在这里插入图片描述
  4. 新增Maven内容,Name随便取,MAVEN_HOME用的是自己配置的maven路径(mvn -v在这里插入图片描述
    在这里插入图片描述
    点击保存返回首页!!!

二、创建并配置Jenkin流水线(重点来了)

1、创建Job

  1. 点击左侧新建ItemCreate a job,创建一个流水线 在这里插入图片描述
  2. 输入任务名称,选择第一个“Freestype project”,点击确定即可
    在这里插入图片描述

2、源码管理(配置Gitlab地址和分支)

  1. 进入Gitlab,找到自己的项目,复制你的项目git地址
    在这里插入图片描述

  2. 配置页面,往下拉,找到源码管理,将git地址复制进Repository URL,并选择Credentials(在一.3中配置的,也可以在这里添加并选择) 在这里插入图片描述

  3. 文中提示报错“Failed to connect to repository : Error performing git command: git ls-remote -h http://192.168.1.11/root/test_project.git HEAD”,是因为服务器未安装git导致,yum安装一下

    yum install git
    

在这里插入图片描述
4. 安装成功后,再次把git地址粘贴进Repository URL,就不会出现刚才的错误了
在这里插入图片描述
5. 继续往下拉,在“指定分支”处,配置你想要自动部署的分支
在这里插入图片描述
觉得手欠的可以先应用一下,再继续进行,防止误关闭页面!!!

3、构建触发器(配置GitLab的Webhooks)

  1. 继续往下拉页面,找到“构建触发器”,勾选“Build when a change is pushed to GitLab

在这里插入图片描述
触发策略由自己决定

- Push Events:提交Push代码触发
- Opened Merge Request Events:合并分支触发
  1. 配置GitLab的Webhooks,搭建钩子,触发部署事件(重中之重)

  2. 打开Gitlab需要部署的项目,左侧点击设置,然后点击Webhooks
    在这里插入图片描述

  3. Webhooks中:URL是“Build when a change is pushed to GitLab”后边的那个地址,粘贴进去
    在这里插入图片描述
    在这里插入图片描述

  4. 回到jenkins,往下拉,点击高级,找到“Secret token”,点击“Generate”,生成令牌,并把这个令牌粘贴进Gitlab-Webhooks的“Secret 令牌”中
    在这里插入图片描述
    在这里插入图片描述

  5. 在Webhoos配置中,勾选推送事件合并请求事件,并点击“添加webhooks

    推送事件中,你可以配置所有分支或者指定的分支,一般来说,部署哪个分支选择哪个即可

    所以,我选择的“通配符样式”,并指定的“dev”分支(dev
    在这里插入图片描述

  6. 点击保存时,Gitlab有可能会报错“Url is blocked: Requests to the local network are not allowed”,这是因为你没有开启Webhooks的出站请求!

解决方法:
(1)进入管理员设置
在这里插入图片描述(2)点击设置,进入网络设置

(3)找到出站请求,点击展开,勾选“允许来自 webhooks 和集成对本地网络的请求”,保存更改即可
在这里插入图片描述

(4)重新配置webhook,即可成功。成功效果如图:
在这里插入图片描述
再次提醒,Jenkins最好点击一次应用,防止丢失!!!

小贴士

其实,在此步骤完成后,你可以将jenkins保存一下,回到首页。并且在刚才配置的Gitlab-webhooks中,点击测试的推送事件,尝试一下,项目能不能成功打包!!!

在这里插入图片描述
回到Jenkins,可以发现已经成功构建一次
在这里插入图片描述
然后去你服务器的“/root/.jenkins/workspace”中,去看看有没有项目代码,target文件夹中有没有jar包~~~
在这里插入图片描述
可以发现,我的Gitlab项目已经上传成功,并且打包成功!!!
如果你有兴趣,也可以看看构建的控制台输出,里边也有打包的输入内容,神奇吧~~~
在这里插入图片描述
在这里插入图片描述

4、构建环境(Build)

勾选“Add timestamps to the Console Output”,方便打印控制台日志!!!
在这里插入图片描述

5、Build Steps(Maven打包项目)

  1. 点击增加构建步骤,选择“Invoke top-level Maven targets

  2. Maven版本选择在一、4中配置的maven版本,“目标”是我们打包命令

    clean package -Dmaven.test.skip=true -U
    

在这里插入图片描述

6、增加构建步骤(杀死已有进程+启动jar包)

  1. 编写jar包启动脚本
cd /data/java

touch start.sh

vim start.sh

脚本内容如下,需要根据个人情况改三个地方

第4行:Java环境变量配置位置(一般是:source /etc/profile)

第6行:jar包位置

第8行:jar包名称

#!/bin/bash
#cp /dev/null /nohup.out
# 重新加载环境变量
source ~/.bash_profile
# 跳转到Jar地址
cd /data/java
# 设置Jar包名称变量
APP_NAME=jimapaotui-2.0.jar
# 杀死原有进程号
ID=`ps -ef | grep $APP_NAME | awk '{print $2}'`
echo "------start---------"
for id in $ID
do
        kill -9 $id
        echo "killed $id"
done
# 防止杀死进程
BUILD_ID=dontKillMe
# 启动Jar包
nohup java -jar $APP_NAME > nohup.out 2>&1 &
echo "------end---------"

为start.sh增加执行权限

sudo chmod +x start.sh

在这里插入图片描述

  1. 点击“增加构建步骤”。选择”Execute shell”,并添加如下的命令
#!/bin/bash
# 复制jar包到脚本中指定的位置
cp ./target/jimapaotui-2.0.jar /data/java
# 执行启动脚本
sh /data/java/start.sh

如图:
在这里插入图片描述
至此,流水线配置已全部完毕,接下来,进行测试流程!!!

四、测试功能

从刚才指定的dev分支提交一次代码
在这里插入图片描述
Jenkin已经开始构建了
在这里插入图片描述
构建成功
在这里插入图片描述
去服务器上看看jar包是否上传,是否执行成功

cd /data/java
ps -ef | grep **.jar

在这里插入图片描述

五、总结

至此,Jenkins结合GitLab实现本地代码自动化部署的功能已经实现,下一期我们会实现远程服务器部署Jar包项目的实例!!!

所有你想象的一切,皆是现实!!!
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值