GitLab钩子简介:
项目钩子
项目钩子是针对单个项目的钩子,会在项目级别的特定事件发生时触发。这些事件包括代码推送、合并请求创建、问题创建等。项目钩子由项目管理员或具有相应权限的用户进行配置,仅对特定项目生效。
- 使用场景:实现项目的自动化构建、测试和部署,例如在代码推送时自动触发 CI/CD 流水线,或者在合并请求创建时自动通知相关人员进行审查。
- 配置步骤
- 进入项目的
Settings
(设置) ->Webhooks
(Web 钩子)页面。- 输入要触发的目标 URL,该 URL 通常是一个接收并处理事件的服务器地址。
- 选择要监听的事件类型,如
Push events
(代码推送事件)、Merge request events
(合并请求事件)等。- 可以根据需要设置其他参数,如触发条件、SSL 验证等。
- 点击
Add webhook
(添加 Web 钩子)保存配置。钩子工作原理
当配置好的事件在 GitLab 中发生时,GitLab 会向配置的目标 URL 发送一个 HTTP 请求,请求中包含了事件的详细信息,如事件类型、相关的项目信息、用户信息等。接收方服务器可以根据这些信息执行相应的操作,例如调用脚本进行代码部署、发送通知邮件等。
一、在Jenkins上配置构建触发器
1、在Jenkins上构建触发器
1.1、选择之前创建的maven项目的配置


1.2、选择构建触发器

1.3、触发远程构建 (例如,使用脚本) --> 填写身份验证令牌

1.4、根据提示的url信息在浏览器上输入相关的url相当与发送一次POST请求
html
JENKINS_URL/job/first-test/build?token=TOKEN_NAME 或者 /buildWithParameters?token=TOKEN_NAME

浏览器上访问:http://192.168.72.131:8080/job/first-test/build?token=test@1234,就相当于自动提交了一次POST请求自动去构建first-test项目

1.5、测试结果
测试机器上可以看出构建的结果

2、安装Build Authorization Token Root插件
安装背景以及插件的作用
上述步骤请求是在Jenkins平台正常登录的情况下进行的,所以在浏览器上访问:http://192.168.72.131:8080/job/first-test/build?token=test@1234 不需要登录,如果换成其他的浏览器或者Jenkins长时间不登录再执行此url时就会弹出登录页面。
现象:

安装Build Authorization Token Root插件就可以解决此问题,相当于会进行匿名登录。
2.1、安装Build Authorization Token Root免登录的插件



2.2、安装插件文档中的介绍修改url
改造前:http://192.168.72.131:8080/job/first-test/build?token=test@1234
改造后:http://192.168.72.131:8080/buildByToken/build?job=first-test&token=test@1234
2.2.1、测试
在浏览器上输入:http://192.168.72.131:8080/buildByToken/build?job=first-test&token=test@1234之后能正常访问,而且能够自动触发构建。

二、GitLab上创建自动构建钩子
1、GitLab项目钩子创建步骤
1.1、进入项目的 Settings(设置) --> Webhooks
1.2、输入要触发的目标 URL,该 URL 通常是一个接收并处理事件的服务器地址
1.3、选择要监听的事件类型,如 Push events(代码推送事件)、Merge request events(合并请求事件)等
2、GitLab不允许本地请求报错处理方法
在GitLab上点击创建后报错:Urlis blocked: Requests to the local network are not allowed不允许本地请求

2.1、以管理员身份登录 GitLab
2.2、进入 Admin Area(管理区域)
2.3、选择 Settings(设置) -> Network(网络)
2.4、在 Outbound requests(出站请求)部分,找到 Allow requests to the local network from web hooks and services 选项,将其勾选
2.5、点击 Save changes(保存更改)

2.6、重新进行添加并保存

三、GitLab上进行代码合并触发Jenkins自动构建测试
1、配置好之后先在GitLab上根据系统提交的步骤进行测试


2、提交并合并代码查看GitLab钩子被触发的情况
2.1、修改代码

2.2、提交代码


2.3、测试
2.3.1、查看测试服务器上前端内容

2.3.2、合并代码

2.3.3、审核人不点击比准看是否能触发自动构建

查看Jenkins日志已经触发构建

查看测试服务器前端内容


虽然审核人没有批准代码合并但是已经触发Jenkins自动构建!!!
2.3.4、审批人审核通过查看是否再次触发构建


浏览器上进行验证

审核人批准代码合并再次触发Jenkins自动构建!!!
结论:
采用GitLab钩子触发自动构建的方法在实际的开发环境的某些场景下并不适用,因为代码合并审核人并没有审核通过,在合并过程中就已经多次触发了自动构建,这样在实际的开发环境中会对测试节点的资源造成很大的浪费,同时也影响到测试环境的稳定性。