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

这篇具有很好参考价值的文章主要介绍了gitlab配置webhook,commit message的时候校验提交的信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

原理

GitLab中的拦截钩子(Interceptor Hook)是一个自定义的钩子(Hook),用于拦截和修改Git命令的输出。它的工作原理是在Git命令执行后,将命令的输出拦截下来,然后通过修改钩子脚本来对输出进行修改,最后再将修改后的输出返回给调用方。

拦截钩子的原理是利用了GitLab的Web Hooks机制。Web Hooks是一种通过HTTP POST发送通知的机制,它允许在特定事件(如代码提交、分支创建等)发生时触发自定义的脚本。通过在GitLab项目中配置Web Hook,可以指定在特定事件发生时执行的操作。

拦截钩子的配置步骤如下:

在GitLab项目中创建一个名为.gitlab-ci.yml的文件,并定义一个名为Interceptor的job。
在Interceptor job中,使用before_script或script指令定义拦截钩子的操作。这些操作可以包括对Git命令输出的处理、修改和其他自定义操作。
在Interceptor job中,使用output指令定义拦截钩子的输出格式和内容。输出格式可以是文本、JSON或其他格式,内容可以包含Git命令的原始输出、修改后的输出或其他自定义数据。
在Interceptor job中,使用only或except指令指定触发拦截钩子的特定事件。例如,可以指定在代码提交或分支创建时触发拦截钩子。
配置完成后,提交代码并触发特定事件,GitLab将会自动执行拦截钩子中的定义的操作,并将修改后的输出通过HTTP POST发送给调用方。
通过这种方式,GitLab中的拦截钩子可以实现自定义的Git命令输出拦截和修改功能,从而满足特定的需求,如对代码提交日志的格式转换、数据筛选等。

不阻止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服务器上才能生效。文章来源地址https://www.toymoban.com/news/detail-696944.html

到了这里,关于gitlab配置webhook,commit message的时候校验提交的信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何修改已提交的git commit信息

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:以下是本篇文章正文内容,下面案例可供参考 终端输入命令: git commit --amend 进入编辑器后,修改需要更改的内容 保存后,即可 可使用 git log 查看是否更改成功 git log 实际上,1、2 步可以省略,

    2024年02月11日
    浏览(49)
  • git之修改已经提交的commit信息

    1、执行命令 git rebase --interactive commitId^ ,以交互方式进行进行rebase操作; git rebase可以实现git 节点或者分支的合并 2、进入编辑页面后,会列出此次rebase操作所涉及的所有commit记录,每一行都是pick开头,找到需要修改的commit id ,将pick改为edit,保存后退出。这样就是将rebase操

    2024年02月16日
    浏览(38)
  • git 提交代码使用--no-verify来解决git commit -m中出现的代码校验(styleLint/eslint)问题

    (1)问题1: (2)问题2: 忽略代码校验。 在后面加上--no-verify即可。 git 提交代码时候报eslint styleLint这种类型的错误, 可以在commit后面加上--no-verify来解决。

    2024年02月11日
    浏览(64)
  • 【实战】git 修改之前的提交记录信息(git commit -m ‘...‘)

    不论线上是否已有多次他人提交,只要是修改本地最后一条提交记录信息,都可以按这个来 进入vi编辑器后: 按 i 下方出现’- - 插入 - -‘的提示时,便可编辑提交记录信息 按 ESC ,输入 :wq 保存退出,或 :q! 不保存强制退出 查看提交日志中修改后的信息 查看前面的提交日

    2024年02月15日
    浏览(55)
  • git merge合并分支代码# Please enter a commit message to explain why this merge is necessar У git退出编辑信息

    git合并代码遇到问题(一般都是正常的合并行为在MacBook上面出现操作) 首先输入完git merge 分支名 后会出现这样的提示,先说流程,再说原因 ①:出现上图提示后,英文状态下按 i 键,这时候会进入insert(插入)模式; ②:然后就可以输入提交信息了,可以把第一行删除,

    2024年02月09日
    浏览(45)
  • idea配置git(gitee)并提交(commit)推送(push)

    Intellij Idea VCS | 版本控制 - 知乎 IDEA项目上传到gitee仓库_idea上传代码到gitee_robin19712的博客-CSDN博客 git程序下载国内镜像地址: https://registry.npmmirror.com/binary.html?path=git-for-windows/v2.42.0.windows.2/ 解压后放到固定路径: 1.在idea文件-设置中配置git关联项: 2.在Settings设置对话框中,安

    2024年02月08日
    浏览(61)
  • 使用Jenkins触发gitlab的webhook

    满足条件: 首先手动构建可以完成构建 例如: 打开项目点击配置 在“Build Triggers”栏勾选,Build when a change is pushed to GitLab. GitLab webhook ;如下 保存配置 配置webhook 3.1 打开gitlab,打开需要配置webhook的项目 3.2. 点击设置,配置webhook 网址输入jenkins复制的URL 我是本地部署测试没

    2024年02月07日
    浏览(33)
  • CRM项目为新增用户设置对应的前端校验规则并发送Axios请求到后端将表单数据提交用户信息------CRM项目

    template     el-button type=\\\"primary\\\" @click=\\\"addUser()\\\"新增用户/el-button     el-button type=\\\"danger\\\"批量删除/el-button     el-table         :data=\\\"userList\\\"         style=\\\"width: 100%\\\"         @selection-change=\\\"handleSelectionChange\\\"             !-- 复选框    --         el-table-column type=\\\"selection\\\" width=\\\"33%\\\"

    2024年02月19日
    浏览(40)
  • 利用GitLab与jenkins借助webhooks实现代码同步

    1.1 什么是 Webhooks Webhooks 是一种通过 HTTP 协议实现的回调机制,用于实时将事件通知传递给其他应用程序。它允许一个应用程序通过 HTTP 请求直接将信息推送给另一个应用程序,而不需要轮询或手动查询。配置Webhook是为了实现更紧密的集成,以便在代码仓库有新的提交时触发

    2024年02月01日
    浏览(42)
  • jenkins 使用webhooks 触发构建任务gitea为例 gitlab类似

    多次尝试以及网上的各种资料查阅成功了下 其他人给的答案他们有他们的道理,至少我没有实验成功。我这里就记录下 添加API token 将生成的token 复制保存 第4步骤的时候要用 配置构建方式 填写身份验证令牌 安全配置修改为 “登录用户可以做任何事” 在gitea 中配置webhooks

    2024年01月25日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包