gitlab 可以是使用webhook 做 自动部署工作,但webhook需要编程才可以,
我这里使用git的自带文件形 hooks,缺点是只能是gitlab的管理员在 gitlab所在的服务器上部署,webhook,可以在任何服务器进行。
要想git push 到远程代码后,自动发布提交的更新,gitlab上,每个项目目录下都有一个hooks目录
对于 Omnibus GitLab installs 的gitlab
具体位置:/var/opt/gitlab/git-data/repositories/GROUP/PROJECT.git/hooks/
其中GROUP为项目组,PROJECT为项目名称
比如我这里/var/opt/gitlab/git-data/repositories/ows/F-SCM.git 这个目录,可以通过登录gitlab页面,点击对应的项目,在filesystem 对应的地方找到,如图:
其中hooks文件夹中是系统调用的三个文件,这三个文件不要修改它,我们直接在 F-SCM.git 目录下新建 custom_hooks 目录,
然后把post-receive 复制过来,并修改这个文件,custom_hooks 是gitlab 程序中写死的,如果不在gitlab.rb 配置custom_hooks_dir 路径,则custom_hooks 生效
我们目的是用户 git push origin 的时候,自动触发我们脚本,来更新提交的程序到我们web目录中,shell脚本如下:
#!/bin/bash
webDir=/webdata/webdir/F-SCM
cd $webDir
echo '开始更新文件'
unset GIT_DIR
git pull
echo '更新完成'
注意几点:
1,脚本 post-receive 不能有后缀
2,脚本 post-receive 必须有git用户的执行权限
3,clone 下来的副本目录必须为git用户写入权限,不然git push也会报错(应为执行脚本的用户为git用户)
4,脚本中 必须有 unset GIT_DIR 否在会报
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!