【基于 GitLab Webhook 的 Jenkins 自动触发构建实现手册:涵盖概念原理、环境配置、故障处理及 Tag/Commit 维度参数化构建实践】

提示:本文原创作品,良心制作,干货为主,简洁清晰,一看就会

Jenkins + GitLab Webhook自动触发构建

  • 前言
  • [一、GitLab Webhook 是什么](#一、GitLab Webhook 是什么)
  • [二、为什么要做 Webhook 自动触发构建](#二、为什么要做 Webhook 自动触发构建)
  • [三、Webhook 自动触发构建原理](#三、Webhook 自动触发构建原理)
  • [四、Jenkins + GitLab Webhook 实战](#四、Jenkins + GitLab Webhook 实战)
    • [4.1 jenkins 下载插件](#4.1 jenkins 下载插件)
    • [4.2 jenkins 上配置webhook](#4.2 jenkins 上配置webhook)
    • [4.3 gitlab上配置webhook](#4.3 gitlab上配置webhook)
    • [4.4 gitlab-webhook配置后报错](#4.4 gitlab-webhook配置后报错)
    • [4.5 模拟开发人员推送代码](#4.5 模拟开发人员推送代码)
    • [4.6 基于git参数化自动构建项目](#4.6 基于git参数化自动构建项目)
      • [4.6.1 下载插件](#4.6.1 下载插件)
      • [4.6.2 基于tag构建](#4.6.2 基于tag构建)
      • [4.6.3 基于tag构建测试](#4.6.3 基于tag构建测试)
      • [4.6.4 基于commit构建](#4.6.4 基于commit构建)
      • [4.6.5 基于commit构建测试](#4.6.5 基于commit构建测试)

前言

对Jenkins基础知识不了解的小伙伴可以看这篇文章https://blog.csdn.net/m0_63756214/article/details/155387987?spm=1001.2014.3001.5501

对gitlab基础知识不了解的小伙伴可以看这篇文章https://blog.csdn.net/m0_63756214/article/details/155339506?spm=1001.2014.3001.5501


一、GitLab Webhook 是什么

GitLab Webhook 是 GitLab 提供的自动化触发工具:当代码仓库发生特定事件(比如提交代码、合并分支、创建标签等)时,GitLab 会自动向你预先配置的一个外部 HTTP 接口发送请求,携带事件相关的详细数据,从而触发外部系统的后续操作

二、为什么要做 Webhook 自动触发构建

手动构建项目操作容易出现漏执行、执行步骤错误等问题,自动化流程能保证构建部署的一致性和准确性;实现持续集成/持续部署(CI/CD):这是 CI/CD 流程的核心环节之一,能让代码从提交到测试、构建、部署的全流程自动化,符合现代开发的最佳实践

三、Webhook 自动触发构建原理

配置阶段:在 GitLab 仓库的 Webhook 设置中,填写接收请求的外部服务地址(比如 Jenkins、自建的后端接口),并指定触发的事件类型。
事件触发:当仓库发生指定事件(比如你推送代码到分支),GitLab 会立即组装事件数据,以 HTTP POST 请求的形式发送到配置的外部地址
外部处理:外部服务 Jenkins 接收到请求后,解析其中的数据,执行预设的构建脚本(比如拉取代码、编译项目、打包镜像等),完成自动构建

注:gitlab和Jenkins应该处于同一网段或者可以通信

四、Jenkins + GitLab Webhook 实战

4.1 jenkins 下载插件

想实现Jenkins自动触发构建的功能,必须先下载webhook相关插件

点击"Manage Jenkins"

下拉找到"Plugins"


下载完插件后最好重启一下Jenkins!

4.2 jenkins 上配置webhook

现有项目的配置都已完成,我选一个现成的项目test-ruoyi-vue,以此为例继续配置 webhook

想看我这个项目怎么来的可以参考这篇文章https://blog.csdn.net/m0_63756214/article/details/155728675?spm=1001.2014.3001.5501

4.3 gitlab上配置webhook

在gitlab上选择相应的项目,进行webhook的配置

配置好后,webhook会显示200

4.4 gitlab-webhook配置后报错

如果webhook报红,这是因为gitlab 10.6 版本以后为了安全,不允许向本地网络发送webhook请求,设置如下:

登录管理员账号

按上述配置完毕后可以测试一下webhook

显示200

4.5 模拟开发人员推送代码

现在我们要做的就是模拟开发人员推送代码,看Jenkins是否能自动构建项目

这是目前的前端的页面

bash 复制代码
#模拟开发人员修改代码
[root@developer ~]# ls
[root@developer ~]# git clone http://192.168.136.10/root/test-ruoyi-vue.git   #拉取gitlab上的代码
[root@developer ~]# ls
test-ruoyi-vue
[root@developer ~]# cd test-ruoyi-vue/
[root@developer test-ruoyi-vue]# vim ruoyi-ui/src/views/index.vue  #修改前端页面
bash 复制代码
[root@developer test-ruoyi-vue]# git add *   #推送到暂存区
[root@developer test-ruoyi-vue]# git commit  -m "添加webhook的版本v1.1"  #推送到工作目录
[root@developer test-ruoyi-vue]# git push origin   #推送到远程仓库

由下图可以看到,不是我手动点的构建,是GitLab的Administrator构建的
注:推送代码后若 Jenkins 未自动构建,可先稍等片刻,可能是网络延迟导致 Jenkins 延迟触发构建

重新访问网页,可以看到前端页面已经修改成功

4.6 基于git参数化自动构建项目

4.6.1 下载插件

想要基于git参数化自动构建,必须先下载git相关插件

4.6.2 基于tag构建

先去gitlab中修改webhook配置

去Jenkins中配置

4.6.3 基于tag构建测试

现在模拟开发人员打标签然后推送代码,观察Jenkins能否自动构建

bash 复制代码
[root@developer test-ruoyi-vue]# vim ruoyi-ui/src/views/index.vue  #修改前端页面
bash 复制代码
[root@developer test-ruoyi-vue]# git add *
[root@developer test-ruoyi-vue]# git commit  -m "打标签,这个版本是V1.1"
[root@developer test-ruoyi-vue]# git tag -a "V1.1" -m "打标签,这个版本是V1.1"  #打标签
[root@developer test-ruoyi-vue]# git push origin V1.1

查看Jenkins,发现Jenkins自动构建成功

访问网页,可以看到网页修改成功

4.6.4 基于commit构建

4.6.5 基于commit构建测试

bash 复制代码
[root@developer test-ruoyi-vue]# vim ruoyi-ui/src/views/index.vue 
[root@developer test-ruoyi-vue]# git add *
[root@developer test-ruoyi-vue]# git commit -m "基于commit修订号测试jenkins自动构建"
[root@developer test-ruoyi-vue]# git push  origin

查看Jenkins发现自动构建成功

访问网页


注:

文中若有疏漏,欢迎大家指正赐教。

本文为100%原创,转载请务必标注原创作者,尊重劳动成果。

求赞、求关注、求评论!你的支持是我更新的最大动力,评论区等你~

相关推荐
大势智慧6 小时前
矿影智测版|矿山自动化测绘,省时精准更省心!
自动化·三维建模·智慧矿山·安全巡检·空间智能··露天矿山
zhihuishuxia__12 小时前
Multiplex通讯(多路复用通讯)
网络·图像处理·数码相机·计算机视觉·自动化
大貔貅喝啤酒12 小时前
接口测试_Postman(详细版)
javascript·测试工具·node.js·自动化·postman
李日灐14 小时前
< 6 > Linux 自动化构建工具:makefile 详解 + 进度条实战小项目
linux·运维·服务器·后端·自动化·进度条·makefile
JZC_xiaozhong14 小时前
跨系统审批自动化怎么做?从采购到销售合同的完整方案
大数据·运维·自动化·流程自动化·数据集成与应用集成·业务流程管理·异构数据集成
搞科研的小刘选手16 小时前
【高届数传感机电会议】第十二届传感器、机电一体化和自动化系统国际学术研讨会(ISSMAS 2026)
运维·人工智能·自动化·控制·传感器·传感·机电
SimLine芯见16 小时前
专为空管环境打造的KVM切换器,满足主备自动化高速无缝切换需求
运维·自动化
恶猫17 小时前
网页自动化模拟操作时,模拟真实按键触发事件【终级方案】
前端·javascript·自动化·vue·网页模拟
Agent产品评测局17 小时前
离散制造业生产流程优化,AI落地实操步骤详解:从传统自动化到企业级智能体的技术范式跃迁
运维·人工智能·ai·自动化
鼎道开发者联盟18 小时前
鼎享会 | 从手工到自动化:OpenClaw改造GitLab内部协作流程的全过程
自动化·gitlab·openclaw