如何在gitlab增加提交规范(例如:必须包含jira id)

        在提交原代码时,我们针对提交的内容都会编写一些commets,但是有些人为了省力提交空白的commets或者写一些毫无意义的字符,对后续查找提交记录及追踪代码问题带来不便,所以我们在gitlab的hook中添加一些规则,防止空白提交和乱提交。

        在gitlab中分为客户端hooks和服务端hooks,本文主要介绍创建服务端hooks,按照纬度不同,又可分为单项目hook配置,全局的hook配置,hook支持不同语言来编写,只要在规则文件的第一行表明是哪种语言(eg. #!/usr/bin/env bash)

单项目hook配置


       在gitlab中每个项目都有一个单独的管理目录,在/var/opt/gitlab/git-data/repositories/<group>/<project>.git目录下,只要创建一个custom_hooks,把脚本放在该目录下就会生效,以下是具体的步骤:

  1. 进入某个项目的目录,cd /var/opt/gitlab/git-data/repositories/<group>/<project>.git
  2. 创建hook目录,mkdir custom_hooks
  3. 进入custom_hooks目录,并创建脚本vim pre-receive,只要执行结果返回1,则会拒绝所有的提交,执行结果返回0,则通过
#!/usr/bin/env bash

echo "error: rejecting all pushes"

exit 1

全局hook配置


     如果需要做一个全局的hook,gitlab中也提供了相应的配置方法,全局的配置在/opt/gitlab/embedded/service/gitlab-shell/hooks目录下,以下是配置提交代码时,起始行必须采用输入jiraid,否则拒绝提交:

  1. 进入全局配置目录cd cd /opt/gitlab/embedded/service/gitlab-shell/hooks
  2. 新建提交前检查目录 mkdir pre-receive.d
  3. 进入pre-receive.d目录(cd pre-receive.d),新建提交规范脚本,跟单项目一样的,返回0成功,其他都是失败
#!/usr/bin/env bash

while read oldVersion newVersion branch; do
#    echo ${oldVersion}
#    echo ${newVersion}
#    echo ${branch}
#获取环境变量
oldVer=${oldVersion}
#oldVer=8c0a6f
newVer=${newVersion}
#newVer=e68cf6
#获取提交记录
mver=`git rev-list ${oldVer}..${newVer}`
#echo $mver
#分割版本提交记录
mverArray=(${mver//\n/ })
#mverArray=mver.split("\n")
reg='^(TEST|FUND|BD)-[0-9]+.*$'
	for onemver in ${mverArray[*]};do
		#获取提交的注解信息
		message=`git cat-file commit ${onemver}  | sed '1,/^$/d'`
		#echo $message
		if [[ "$message" =~ $reg ]];then
              		echo "match found"
  		else
            		echo "error:match not found,commitid-${onemver},message-${message}"
                        exit 1
  		fi
	done
done


其中 oldVersion newVersion branch为3个系统变量,调用脚本时会自动传入。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值