gitlab配置webhook限制提交注释

一、打开gitlab相关配置项

vim /etc/gitlab/gitlab.rb

gitlab_shell['custom_hooks_dir'] = "/etc/gitlab/custom_hooks"

 

二、创建相关文件夹

mkdir -p /etc/gitlab/custom_hooks

mkdir -p /etc/gitlab/custom_hooks/post-receive.d

mkdir -p /etc/gitlab/custom_hooks/pre-receive.d

mkdir -p /etc/gitlab/custom_hooks/update.d

 

#将相关脚本放入对应目录

参考文档:https://docs.gitlab.com/ee/administration/server_hooks.html

https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks#Server-Side-Hooks

 

#!/usr/bin/env  python3
import sys
import re
import subprocess
#import redis
refname = sys.argv[1]
oldrev  = sys.argv[2]
newrev  = sys.argv[3]



regex='([a-zA-Z0-9]+-\\d+)\\,\\s+.{10,}'


def check_message_format():
	cmd='git rev-list '+oldrev+'..'+newrev
	print(cmd)
	p = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)
	l= p.stdout.readlines()
	for rev in l:
		cmdsub="git cat-file commit "+rev.decode().strip('''\n''')+"  | sed '1,/^$/d'"
		p1 = subprocess.Popen(cmdsub,shell=True,stdout=subprocess.PIPE)
		l1 = p1.stdout.readline()
		print(l1)
		result = re.match('([a-zA-Z0-9]+-\\d+)\\,\\s+.{10,}',l1.decode())
		if result == None:
			 print("your commit msg should like : TEST-123,  fix the wrong caution")
			 sys.exit(1)
	sys.exit(0) 
check_message_format()

 

三、使配置生效

gitlab-ctl reconfigure

 

效果:

一、提交代码格式为jira项目问题编号, 注释信息”,例如

git commit -m "SMGJ-120, 测试提交代码"

#注释信息可以中文也可以英文,但是标红处的字符不得少于10个字符。

 

 

 

 

 

 

 

 

 

 

由于注释信息为6个字,所以被拦截,并且在报错中也给出样例“remote: your commit msg should like : TEST-123,  fix the wrong caution”。

 

二、修改注释,重新提交代码

使用git commit --amend

修改注释信息为"SMGJ-120, 测试提交代码测试提交代码"

 

 

 

 

三、重新推送代码

直接推送代码,完成。

 

 

 

 

posted @ 2022-02-21 15:50  0胡桃夹子0  阅读(727)  评论(0编辑  收藏  举报