Gitlab配置pre-receive钩子拦截检查提交日志是否满足规范
admin
2024-03-08 09:43:28
0

Gitlab配置pre-receive钩子拦截检查提交日志是否满足规范

  • 环境说明
  • 参考链接
  • 选择钩子文件夹
  • 创建全局服务器钩子
  • 完事

环境说明

Gitlab docker: gitlab/gitlab-ee:15.4.2-ee.0

参考链接

Gitlab Docs - Git server hooks
Gitlab pre-receive webook 的添加与使用

选择钩子文件夹

  1. 决定钩子文件存放路径的配置文件存在/etc/gitlab/gitlab.rb文件中,我们需要打开它进行编辑;
    在终端中输入:
vi /etc/gitlab/gitlab.rb
  1. 如果提示没有找到vi,则需要安装vim;
    使用如下命令安装vim:
apt-get update
apt-get install vim
  1. 进入gitlab.rb文件的编辑页面后,输入/custom_hooks_dir,点击回车,会直接跳到配置行,默认如下所示:
#gitaly['custom_hooks_dir'] = "/var/opt/gitlab/gitaly/custom_hooks"

我们需要把前面的#符号去掉,表示应用这条规则;

gitaly['custom_hooks_dir'] = "/var/opt/gitlab/gitaly/custom_hooks"
  1. 保存文件,点击键盘上的esc按钮,输入:wq,回车,保存完成;

创建全局服务器钩子

  1. 打开/var/opt/gitlab/gitaly/custom_hooks文件夹
cd /var/opt/gitlab/gitaly/custom_hooks/
  1. 新建文件夹pre-receive.d
mkdir pre-receive.d
  1. 添加脚本文件pre-receive-commit-message-check
vi /var/opt/gitlab/gitaly/custom_hooks/pre-receive.d/pre-receive-commit-message-check
  1. 输入脚本内容,并保存
#!/bin/bashzeroCommit='0000000000000000000000000000000000000000'
mergeRegex='^(Merge)(.{1,})'
contentRegex='^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.{1,}\))?:\s?(.{1,})'while read -r oldrev newrev refname; doecho "开始检查提交信息..."echo "您提交的分支为:$refname"# Branch or tag got deleted, ignore the push[ "$newrev" = "$zeroCommit" ] && continue# Calculate range for new branch/updated branch[ "$oldrev" = "$zeroCommit" ] && range="$newrev" || range="$oldrev..$newrev"for commit in $(git rev-list "$range" --not --all); douser=$(git log --pretty=format:"%an" $commit -1)commitDate=$(git log --pretty=format:"%cd" $commit -1)msg=$(git log --pretty=format:"%s" $commit -1)flagMerge=$(echo $msg | grep -E "$mergeRegex")flagPush=$(echo $msg | grep -E "$contentRegex")if [ -z "$flagPush" ] && [ -z "$flagMerge" ]; thenecho "[ERROR]"echo "[ERROR]由于这份提交日志不规范,本次提交被拒绝"echo "[ERROR]$commit in ${refname#refs/heads/}"echo "[ERROR]提交者:$user"echo "[ERROR]提交日期:$commitDate"echo "[ERROR]提交日志:$msg"echo "[ERROR]提交信息检查不通过!!!"echo "[ERROR]请按照规范修改提交日志后重新尝试提交。"preecho "[ERROR]"exit 1fidoneecho "提交信息检查通过。"
done
  1. 设置脚本权限777
chmod 777 pre-receive-commit-message-check

完事

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...