gitlab之web hook设置

86 篇文章 2 订阅
59 篇文章 2 订阅

web-hook

一.系统级的




二.项目级的





 
 

创建 hook 文件

自定义脚本目录要符合 <custom_hooks_dir>/<hook_name.d>/* 的规范。具体来说就是:

  • 在自定的 custom_hooks_dir 目录下可创建三个文件夹对应三类 server hook name
    • pre-receive.d
    • update.d
    • post-receive.d
  • 在每个文件夹下可创建任意文件,在对应的 hook 时期,gitlab 就会主动调用
  • 文件名以 ~ 结尾的文件会被忽略
  • 如果想看这部分的实现细节可以看 <gitlab-shell>/lib/gitlab_custom_hook.rb 文件

目录结构示意:

[root@localhost custom_hooks]# tree
.
├── post-receive.d
│   ├── 01.sh
│   └── 02.sh~
├── pre-receive.d
│   ├── 01.sh
│   ├── 02.py
│   └── 03.rb
└── update.d
    ├── 01.sh
    └── 02.sh

4. 编写 hook 脚本

Hook 脚本就是 git 自身的规范,写 shell、python、ruby 都可以。

留意脚本最后的退出值:0 正常退出,用户可以 push;非 0 异常退出,中断提交(pre-receive 和 update)



作者:zvving
链接:http://www.jianshu.com/p/5531a21afa68
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

服务器端的hook

直接修改项目.git/hooks下对应的钩子文件或/opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive.d/1.py中

比如限制以b-或r-开头的分支禁止提交到远端仓库

增加1.py,内容如下: ----------------------注意原来默认的/opt/gitlab/embedded/service/gitlab-shell/hooks/pre-receive不能动,不然分支保护和TAG保护功能将失效

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import fileinput


# 读取用户试图更新的所有引用
for line in fileinput.input():
    if line.split()[2].split('/')[1]=='heads':
        branch_name=line.split()[2].split('/')[2]
#    print branch_name[0:2]
        if branch_name[0:2]=='b-' or branch_name[0:2]=='r-':
            print "禁止以b-或r-开头命名分支"
            sys.exit(1)


参考:https://github.com/geeeeeeeeek/git-recipes/wiki/5.4-Git-%E9%92%A9%E5%AD%90%EF%BC%9A%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BD%A0%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%B5%81



注意:不能直接对项目.git/hooks下或/opt/gitlab/embedded/service/gitlab-shell/hooks中的钩子进行修改,会影响现有功能,比如修改pre-receive会导致分支保护和tag保护功能失效。还有就是管理员角色不受分支保护的限制:)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值