当前位置: 首页 > news >正文

gitlab配置hook,commit message的时候校验提交的信息

在 GitLab 中配置 Webhook 来调用 Java 接口以校验 commit 信息,是很多公司的一些要求,因为提交信息的规范化是必要的

不阻止commit的版本

在 GitLab 项目中进入设置页面。

在左侧导航栏中选择 “Webhooks”(Web钩子)。

在 Webhooks 页面中点击 “Add Webhook”(添加 Webhook)按钮。

在 Webhook 配置表单中,填写以下信息:

  • Name:自定义 Webhook 的名称。
  • URL:调用 Java 接口的 URL。
  • Push events:勾选 “Push events”(推送事件)选项,以便在每次 commit 时触发 - Webhook。
  • Active:勾选 “Active”(激活)选项,使 Webhook 生效。
  • Secret token:自定义一个 secret token,用于验证请求的合法性。
  • 点击 “Add Webhook”(添加 Webhook)按钮,完成配置。

接下来,需要编写 Java 接口来接收并校验 commit 信息。以下是一个简单的示例代码,可以根据实际需求进行修改和扩展:

import javax.servlet.http.HttpServletRequest;  
import org.json.JSONObject;  
import com.fasterxml.jackson.databind.ObjectMapper;  @RestController  
public class CommitHookController {  @Autowired  private ObjectMapper objectMapper;  @RequestMapping("/webhook")  public String webhook(HttpServletRequest request) throws Exception {  String body = request.getReader().readLine();  JSONObject json = new JSONObject(body);  String ref = json.getString("ref");  String pusher = json.getString("pusher");  JSONObject commit = json.getJSONObject("commit");  String message = commit.getString("message");  // 在这里添加校验逻辑,例如检查 commit message 是否符合要求等。  if (!message.matches("[a-zA-Z0-9\\s]+")) {  return "Invalid commit message.";  }  // 返回成功响应或其他自定义响应。  return "Commit hooks are awesome!";  }  
}

实战配置如下(阻止commit提交的配置)

阻止commit提交需要修改配置文件,暂时不支持可视化配置

登录到GitLab服务器。
导航到你的项目的存储库目录。
在该目录下创建一个名为hooks的文件夹(如果已存在,请跳过此步骤)。
进入hooks文件夹。
使用文本编辑器创建一个名为pre-receive的文件。
在pre-receive文件中编写你的钩子逻辑,例如调用Java接口进行commit信息校验。
保存并关闭文件。

具体配置

#!/bin/sh  # 获取commit信息  
commit_id=$1  
commit_message=$(git show -s --format=%B $commit_id)  # 调用Java接口进行校验  
response=$(curl -s -X POST -H "Content-Type: application/json" -d "{\"commitId\": \"$commit_id\", \"commitMessage\": \"$commit_message\"}" http://example.com/api/validate)  # 解析Java接口返回的结果  
if echo $response | grep -q "error"; then  echo "Commit validation failed: $response"  exit 1  
fi  # 允许提交  
exit 0

配置pre-receive钩子不需要重启GitLab。在GitLab的服务器上,只需要按照以下步骤操作:

在项目的存储库目录下创建一个名为“hooks”的文件夹。
进入“hooks”文件夹。
创建一个名为“pre-receive”的文件。
在“pre-receive”文件中编写钩子逻辑,例如调用Java接口进行commit信息校验。
保存并关闭文件。
这样就完成了pre-receive钩子的配置,它会在每次提交代码时被调用,其中的逻辑是检查commit信息是否符合要求,可以阻止不符合要求的提交。

问题

  • git的webhook配置范围是单个项目还是gitlab上的所有项目

Git的Webhook配置范围可以针对单个项目,也可以针对GitLab上的所有项目。具体配置取决于你的需求。

对于单个项目,可以在项目的设置页面中找到Webhooks选项,然后进行配置。对于所有项目,可以在GitLab的全局设置中进行配置。

需要注意的是,Webhook的配置信息是存储在GitLab的数据库中的,所以在进行配置更改后,需要提交更改并推送到GitLab服务器上才能生效。

http://www.lryc.cn/news/165218.html

相关文章:

  • ssh远程管理服务
  • C语言顺序表
  • 滑动窗口详解
  • JAVA -华为真题-分奖金
  • 第二章:25+ Python 数据操作教程(第十八节如何使用 Matplotlib 库在 python 中执行绘图和数据可视化)持续更新中
  • XShell7 + Xftp7 + IDEA 打包MapReduce程序到集群运行
  • 微软D365 入门文章汇总以及各项认证介绍(持续跟新.....)
  • vscode搭建Django自带后台管理系统
  • Verilog零基础入门(边看边练与测试仿真)-时序逻辑-笔记(4-6讲)
  • 2023-09-12力扣每日一题
  • leetcode面试题:交换和(三种方法实现)
  • 前端可视化界面开发技术:实战与优化
  • Python实现机器学习(下)— 数据预处理、模型训练和模型评估
  • 树结构处理,list和tree互转
  • 可视化大屏设计模板 | 主题皮肤(报表UI设计)
  • Spring Boot + Vue的网上商城之客服系统实现
  • RabbitMQ: return机制
  • 记录一些奇怪的报错
  • Ubuntu 安装redis数据库,并设置开机自启动
  • 基于开源模型搭建实时人脸识别系统(五):人脸跟踪
  • VUE | 配置环境变量
  • Dynamic-TP入门初探
  • Git的基本操作:远程操作
  • 【IOC,AOP】spring的基础概念
  • 安全实战 | 怎么用零信任防范弱密码?
  • 1-4 AUTOSAR方法论
  • MFC C++ 数据结构及相互转化 CString char * char[] byte PCSTR DWORE unsigned
  • 多版本CUDA安装切换
  • sqlserver union和union all 的区别
  • Matlab 如何计算正弦信号的幅值和初始相角