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

完事

相关内容

热门资讯

安卓系统焦点变化事件,Andr... 你知道吗?在安卓系统的世界里,最近发生了一件超级有趣的事情——焦点变化事件。这可不是什么小打小闹,它...
一加系统安卓降级,轻松还原经典... 你有没有想过,你的手机系统升级后,突然发现某些功能变得不那么顺心了?别急,今天就来聊聊一加系统安卓降...
日本最好的安卓系统,体验非凡 亲爱的读者们,你是否曾想过,在遥远的东方,有一个国家,他们的智能手机系统独具特色,让人眼前一亮?没错...
荣耀安卓11 系统证书,保障安... 你知道吗?最近手机圈里可是炸开了锅,荣耀安卓11系统证书成了大家热议的话题。这不,我就迫不及待地来和...
安卓手机开机升级系统,体验流畅... 你有没有发现,每次你的安卓手机开机,总会有那么一刹那,屏幕上跳出一个升级系统的提示?是不是觉得这就像...
真正的安卓系统手机,安卓系统手... 你有没有想过,为什么有些人对安卓系统手机情有独钟?是不是觉得市面上的安卓手机千篇一律,缺乏个性?别急...
安卓怎么用定位系统,轻松实现精... 你有没有想过,手机里的定位系统竟然这么神奇?它不仅能帮你找到回家的路,还能在茫茫人海中找到你的好友。...
安卓的哪个系统流畅,探索新一代... 你有没有想过,为什么你的安卓手机有时候像蜗牛一样慢吞吞的,而别人的手机却像风一样快?今天,就让我带你...
安卓系统解锁工具下载,畅享自由 你是不是也和我一样,对安卓系统的解锁工具感兴趣呢?想象你的手机被锁住了,无论是忘记密码还是想尝试新的...
谷歌退出安卓系统停用,停用背后... 你知道吗?最近有个大新闻在科技圈里炸开了锅!谷歌竟然宣布要退出安卓系统,这可真是让人大跌眼镜啊!想象...
安卓系统卡顿修复,轻松提升手机... 手机用久了是不是感觉有点卡卡的呢?别急,今天就来给你支几招,让你的安卓手机重焕生机,告别卡顿的烦恼!...
安卓系统停用怎么解除,轻松恢复... 你是不是也遇到了安卓系统停用的问题,急得像热锅上的蚂蚁?别急,今天就来给你详细解析怎么解除这个让人头...
最初始的安卓系统,技术演进与产... 亲爱的读者,你是否曾好奇过,那个如今无处不在的安卓系统,它的诞生之初是怎样的呢?今天,就让我们一起穿...
patchwall系统和安卓系... 你有没有发现,手机上的界面越来越个性化了?没错,这就是科技的魅力所在。今天,咱们就来聊聊两个在个性化...
汽车安卓系统换主题,焕新视觉体... 你有没有发现,汽车里的安卓系统换主题,简直就像给爱车换了个新衣裳,瞬间感觉焕然一新呢!想象当你驾驶着...
掌柜智囊收银系统安卓,高效便捷... 你有没有想过,在繁忙的店铺里,如何让收银工作既高效又轻松呢?今天,就让我带你一探究竟,看看这款掌柜智...
怎么控制安卓系统内存,安卓系统... 手机用久了是不是感觉越来越卡?别急,今天就来教你怎么控制安卓系统的内存,让你的手机重新焕发活力!一、...
电视机系统安卓系统吗,探索智能... 亲爱的读者,你是不是也和我一样,对家里的电视机系统充满了好奇?尤其是当它运行的是安卓系统时,那种探索...
魅族系统flyme安卓,魅族安... 你有没有发现,手机的世界里,总有一些品牌能让人眼前一亮?今天,咱们就来聊聊魅族旗下的Flyme系统,...
安卓仿ios系统链接,带你领略... 你有没有发现,最近安卓手机界掀起了一股仿iOS系统链接的热潮?这可不是什么小打小闹,而是各大厂商纷纷...