CI/CD—GitLab钩子触发Jenkins自动构建项目

GitLab钩子简介:

项目钩子

项目钩子是针对单个项目的钩子,会在项目级别的特定事件发生时触发。这些事件包括代码推送、合并请求创建、问题创建等。项目钩子由项目管理员或具有相应权限的用户进行配置,仅对特定项目生效。

  • 使用场景:实现项目的自动化构建、测试和部署,例如在代码推送时自动触发 CI/CD 流水线,或者在合并请求创建时自动通知相关人员进行审查。
  • 配置步骤
    1. 进入项目的 Settings(设置) -> Webhooks(Web 钩子)页面。
    2. 输入要触发的目标 URL,该 URL 通常是一个接收并处理事件的服务器地址。
    3. 选择要监听的事件类型,如 Push events(代码推送事件)、Merge request events(合并请求事件)等。
    4. 可以根据需要设置其他参数,如触发条件、SSL 验证等。
    5. 点击 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钩子触发自动构建的方法在实际的开发环境的某些场景下并不适用,因为代码合并审核人并没有审核通过,在合并过程中就已经多次触发了自动构建,这样在实际的开发环境中会对测试节点的资源造成很大的浪费,同时也影响到测试环境的稳定性。

相关推荐
heimeiyingwang1 天前
【架构实战】Helm Chart 进阶:依赖管理、测试与 CI/CD 集成
ci/cd·架构
worilb1 天前
Spring Cloud 学习与实践(16):Elasticsearch 商品搜索、中文分词与索引一致性
运维·jenkins
龙智DevSecOps解决方案1 天前
Perforce Delphix测试数据管理平台:每月实现数百万次 CI/CD 运行,更快交付高质量软件
ci/cd·devops·tdm·perforce·delphix·企业级数据管理
BullSmall2 天前
Jenkins LTS JDK21 docker-compose.yml(生产可用)
运维·docker·jenkins
weixin_419658312 天前
Docker 搭建 Jenkins 服务
java·docker·jenkins
砍材农夫2 天前
运维|devops|jenkins构建应用发布
运维·jenkins·devops
BullSmall2 天前
Tomcat 部署 Jenkins → Docker Jenkins 完整迁移方案
docker·tomcat·jenkins
Misnearch2 天前
mcp-server
llm·jenkins·mcp
AOwhisky2 天前
云原生 DevOps 工具链从入门到实战(第二期)——Jenkins安装与基础配置——CICD核心引擎
linux·运维·ci/cd·云原生·jenkins·devops
析数塔3 天前
SleeperGem 技术拆解:恶意 gem 是怎么躲过 CI/CD 扫描的
安全·ci/cd·github