gitlab配置custom hook
設置custom_hooks路徑
修改 gitlab 中的vi /etc/gitlab/gitlab.rb
注:這里直接去掉注釋使用自帶的
gitlab_shell['custom_hooks_dir'] = "/opt/gitlab/embedded/service/gitlab-shell/hooks"
啟用配置
sudo gitlab-ctl reconfigure
創建hook文件
自定義腳本目錄要符合<custom_hooks_dir>/<hook_name.d>/*
的規范。具體就是
-
在自定的
custom_hooks_dir
目錄下可創建三個文件夾對應三類server hook name
:- pre-receive.d
- update.d
- post-receive.d
-
在每個文件夾下可以創建任意文件,在對應的hook時期,gitlab就會主動調用
-
文件名以
~
結尾的文件會被忽略
編寫 hook 腳本
hook 腳本就是git 自身的規范,寫shell,python、ruby 都可以
留意腳本最后的退出值:0 正常退出,用戶可以 push;非 0 異常退出,中斷提交(pre-receive 和 update) 。 細節參見: 5.4 Git鈎子:自定義你的工作流 · geeeeeeeeek/git-recipes Wiki · GitHub
如果想讓用戶 push 時看到相應的日志直接在腳本中 echo 即可。
這里舉兩個例子:
🌰:Say hi.
#!/bin/sh echo "Say hi from gitlab servertes ok 😄" exit 0
參考文檔: https://java.isture.com/tools/gitlab/custom-hook.html#_1-4-%E7%BC%96%E5%86%99-hook-%E8%84%9A%E6%9C%AC