当前位置: 首页 > news >正文

深入解析:GitLab 钩子 + Jenkins 自动化构建项目

深入解析:GitLab 钩子 + Jenkins 自动化构建项目

在 Jenkins + Maven + Git 自动化部署的基础上,我们今天通过 GitLab 钩子 的方式,当开发提交代码,或者合并分支请求的时候,自动地触发自动化构建。

一、Jenkins 配置

1、远程构建触发器

在 Jenkins 构建配置 Dashboard > first > Configuration > Triggers 有一个构建触发器

它可以让远程的服务器,或者客户端通过 HTTP 请求的方式,来触发某一个构建任务的构建。

2、测试远程构建触发器

  • 配置上 token,然后保存

  • 在打开 Jenkins 的同一个浏览器,访问
http://192.168.40.98:8080/job/first/build?token=123456
  • 可以看到 Jenkins 的构建列表里,触发了一个新的构建任务。

3、跨浏览器测试

打开另外一个浏览器,就比如我 Jenkins 是在 Edge 打开的,我现在在 夸克 浏览器访问刚才的URL。

会发现被重定向到登录页了。这是因为跨浏览器访问,夸克浏览器没有 Jenkins 的登录会话(session),请求被拦截并重定向到登录页了。那怎么解决这个问题呢?

4、安装 Build Authorization Token Root 插件

在 Dashboard > Manage Jenkins > 插件管理 > Available plugins 搜索 Build Authorization Token Root 插件 并安装

  • 安装完点击返回首页

  • Build Authorization Token Root 插件

可以让我们以匿名的访问来访问 Jenkins,并通过访问另外一个 URL 来触发 Jenkins 的构建任务。

5、测试匿名触发

在夸克浏览器访问

http://192.168.40.98:8080/buildByToken/build?job=first&token=123456

此时,Edge 的 Jenkins 自动触发了一次新的构建

接下来,我们就可以把这个地址配置到 GitLab Webhook 上,当 GitLab 发生 提交、合并 事件的时候,去回调这个 URL。

二、GitLab 配置

1、GitLab 项目配置

在 GitLab 项目配置里,找到 Settings > Webhooks

  • 配置 Jenkins URL

  • 勾选 Push 事件,默认所有分支

  • 取消 SSL 认证

因为我们 Jenkins URL 并不是 HTTPS 的,所以取消认证,Add webhook

  • 点击完 Add webhook 会报一个错,Invalid url given

这是因为 GitLab 做了一个限制,不允许本地网络访问。

2、GitLab 全局配置

在 Admin area > Settings > Network > Outbound requests(出站请求)勾选

Allow requests to the local network from webhooks and integrations

然后 Save changes。

3、测试 GitLab Hook

重新再配置一遍 GitLab 项目配置后,会发现 Webhooks 多出来一条记录。

点击 Test,选择 Push events 进行测试。

在点击 Push events 的同时,Jenkins 构建列表中,又触发了一次新的构建。证明我们 Webhooks 配置没问题。

4、本地提交代码测试

在 IDEA 修改一下 Jenkins-study 代码并提交

  • 可以看到,Jenkins 又触发了一次新的构建

  • 浏览器访问
http://192.168.40.97:8088/

思考?

  • Push events 触发的的构建有什么问题吗?

首先的问题就是构建太频繁了,开发每提交一次代码,都会触发一次新的构建,这样是很耗费系统资源的。正常我们项目针对每个环境都会有一个分支,比如 开发环境 有一个 dev 分支,测试环境有一个 test 分支,生产环境有一个 prod 分支。

当开发人员将 dev 分支合并到 test 分支的时候,或者 部署人员 将 test 分支合并到 prod 分支的时候,我们才希望 Jenkins 帮我们触发构建。

5、Merge 事件触发

  • 修改 Webhooks 配置

  • 新建分支

我们现在 Jenkins 拉取的分支是 master,我们从 master 拉取一个新的分支 test,修改一下代码,然后合并回 master,看看会发生什么。

  • GitLab 上处理合并请求

  • 选择将 test 合并到 master

  • 创建合并请求

  • 可以看到此时我们的代码还未合并,只是创建了合并请求,Jenkins 就触发了一次构建

原因写在 GitLab Webhook 说明里

  • 合并代码

  • Jenkins 又触发了两次构建

一次是我本地 test 合并到 远程 GitLab test,触发一次;

一次是远程 test 合并到 远程 master 触发一次;

  • 查看浏览器,代码已是最新

三、总结

通过实际测试,GitLab 的 合并请求事件,是不管 哪个分支合并到哪个分支,它都会触发通知,需要由你的服务端来决定是否需要处理。这样就会造成即使不是我们当前 Jenkins 构建任务分支的合并,也会触发 Jenkins 的构建。

http://www.rkmt.cn/news/61867.html

相关文章:

  • 27.10.30
  • 抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15
  • 深度学习50问
  • 2025年11月天津防潮公司,北京别墅地下室防潮公司,上海防潮公司权威推荐,防潮技术与市场口碑深度解析
  • 树状数组 线段树 笔记
  • 大模型(LLM)基本原理
  • 实训(补)
  • 2025年下半年江苏网架、钢结构、光伏支架钢管、托辊钢管、汽车传动轴钢管厂家推荐指南:专业选择与权威解析
  • 2025年11月压力容器、化工设备、锅炉、换热器、反应釜厂家怎么选:前五推荐指南
  • 2025年下半年冷弯成型前冲孔生产线、C型钢自动抱焊机、钢结构码垛机、H钢冲孔液压设备、光伏支架冲孔机优质供应商推荐指南
  • 2025年下半年压力容器、化工设备、锅炉、换热器、反应釜厂家综合推荐指南:十大优质供应商深度解析
  • 从“人工寻宝”到“秒级解析”:文档信息抽取技术重塑保险保单处理流程
  • Swift相机功能实战:手把手教你实现扫码、拍照、视频录制全流程 - 指南
  • 全息投影仓的AI连接系统的开发代码要怎么写?
  • 2025年江苏储物柜、卧室套装、衣柜衣橱、厨房橱柜工厂、全屋定制源头厂家推荐榜单:十大专业厂家综合评测
  • VUE3基础环境搭建
  • 基于Halcon的相机图像采集系统设计与达成
  • 2025年下半年辣椒种子、色素椒种子、线椒种子、螺丝椒种子、加工型辣椒种子厂家推荐排行榜单:精选五家优质供应商指南
  • Python进阶学习
  • 2025年塑料托盘、塑胶卡板、吹塑托盘、塑料栈板、防渗漏托盘生产厂家选购全指南:品牌推荐与行业洞察
  • 2025年四川成都木瓜蛋白酶泡毛肚技术、毛肚蒸煮机、毛肚自动化设备、毛肚清洗机、毛肚加工设备、毛肚设备工厂综合评估与选购指南
  • 【图像算法 - 31】基于深度学习的太阳能板缺陷检测体系:YOLOv12 + UI界面 + 数据集建立
  • 2025年下半年仓储货架/冷库货架/AGV货架/CTU货架/大连货架厂家推荐榜单:十大专业供应商综合评测
  • 白井黑子
  • 2025年四川PRDP防腐式带立筋缠绕管公司排名
  • OKR 与 KPI
  • Windows后门工具排查_2025/11/26(持续更新)
  • 项目解决方案:轮船AI识别违规行为解决方案 - 教程
  • 实验4 组合与继承
  • 2025 西安口碑好的权威短视频拍摄运营公司推荐 3 家