尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

深入解析:GitLab 钩子 + Jenkins 自动化构建项目
📅 发布时间:2026/6/24 14:14:43

深入解析: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 的构建。

相关新闻

  • 27.10.30
  • 抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15
  • 深度学习50问

最新新闻

  • sccache编译缓存终极指南:如何用云端缓存加速你的构建速度
  • Leveldown C++原生绑定实现原理:从Node.js到LevelDB的桥梁
  • PDFGen:面向嵌入式与资源受限环境的C语言PDF生成架构
  • Ngx-restangular 核心功能解析:all、one、several 方法深度指南
  • 5步终极方案:将闲置电视盒子改造为专业Armbian服务器
  • BlenderMCP:基于MCP协议的AI驱动3D建模解决方案

日新闻

  • 终极指南:如何用shadPS4在电脑上免费畅玩PS4游戏
  • 打造个性化Instagram Clone:主题定制与用户体验优化技巧
  • 未来展望:RoseTTAFold-All-Atom的发展路线图与社区支持资源汇总

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号