gitlab 提交代码自动部署到web目录(或者做其他事情)

gitlab 可以是使用webhook 做 自动部署工作,但webhook需要编程才可以, 我这里使用git的自带文件形 hooks,缺点是只能是gitlab的管理员在 gitlab所在的服务器上部署,webhook,可以在任何服务...

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 对应的地方找到,如图:

attachments-2020-09-H21exIgR5f53f3a9a50a4,png

其中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用户)

attachments-2020-09-bFwIcoe35f5f38a93b7fa,png

4,脚本中 必须有 unset GIT_DIR 否在会报       

 “fatal: not a git repository: '.'” when using post-update hook to execute 'git pull' on another repo 的错





  • 发表于 2020-09-06 04:33
  • 阅读 ( 58 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
石天
石天

437 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章