当前位置: 首页 > 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.jsqmd.com/news/51939/

相关文章:

  • 27.10.30
  • 抖音a_bogus,mstoken全参数爬虫逆向补环境2024-06-15
  • 深度学习50问
  • 借助gdb推进修改oracle scn
  • 2025年11月红外防潮系统,碳红外防潮取暖系统,别墅红外防潮系统厂家推荐:实力防潮品牌解析,采购无忧之选!
  • 2025年11月天津防潮公司,北京别墅地下室防潮公司,上海防潮公司权威推荐,防潮技术与市场口碑深度解析
  • 50048_基于微信小程序的人事管理系统
  • 树状数组 线段树 笔记
  • 二分答案 序列划分
  • Ai元人文:谦卑的舞台搭建者——岐金兰与她的未完成之歌
  • 2025年下半年UVLED面光源、UVLED线光源、UV固化箱、UV解胶机、UV固化炉厂家Top 5推荐指南:选购必看榜单
  • 2025年江苏宣传片、网站建设、AI GEO、外贸站、小程序商城公司综合评测与精选服务商推荐
  • 数据破界,价值共生:东软锚定AI时代民生新答卷
  • Ansible生产调优与故障排查全攻略 - 实践
  • 2025年下半年UVLED面光源、UVLED线光源、UV固化箱、UV解胶机、UV固化炉厂家综合评测与选购指南
  • 简单 DP 模型
  • 大模型(LLM)基本原理
  • 2025年江苏徐州板式家具、模压托盘、桥洞力学板、三聚氰胺饰面板品牌公司综合推荐指南:五大优质厂商深度解析
  • 实训(补)
  • 马克思主义课程
  • Check Point R82 Gaia - 面向安全应用的下一代操作系统
  • 2025年下半年江苏网架、钢结构、光伏支架钢管、托辊钢管、汽车传动轴钢管厂家推荐指南:专业选择与权威解析
  • 2025年11月压力容器、化工设备、锅炉、换热器、反应釜厂家怎么选:前五推荐指南
  • 2025年下半年候车亭、公交站台、电子站牌、公交站牌、公交候车厅选购指南:十大优质供应商推荐
  • 2025年下半年江苏徐州冷弯成型前冲孔生产线、C型钢自动抱焊机、钢结构码垛机、H钢冲孔液压设备、光伏支架冲孔机厂家选购指南与市场解析
  • 2025年下半年冷弯成型前冲孔生产线、C型钢自动抱焊机、钢结构码垛机、H钢冲孔液压设备、光伏支架冲孔机优质供应商推荐指南
  • 2025年下半年压力容器、化工设备、锅炉、换热器、反应釜厂家综合推荐指南:十大优质供应商深度解析
  • 从“人工寻宝”到“秒级解析”:文档信息抽取技术重塑保险保单处理流程
  • 2025年下半年轴连轴承、水泵轴承、转向轴承、圆锥滚子轴承、汽车水泵轴承厂家综合推荐指南:十大优质供应商盘点
  • Swift相机功能实战:手把手教你实现扫码、拍照、视频录制全流程 - 指南