gitlab自动同步代码到web站点

备注:还未亲自测试,但感觉可行!

1、进入网站目录,克隆仓库代码

1
2
3
4
cd /www/wwwroot/
git clone http://192.168.3.141:8099/liujuncheng/test.git test
chmod -R 777 test
chown -R www:www test

2、设置git自动更新的钩子文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cd /var/opt/gitlab/git-data/repositories/liujuncheng/test.git/hooks
vi post-receive
#文件内容,将原有的文件备份,并清空写入以下文件内容
#!/bin/bash
#获取当前目录
DIR_NAME=$( cd $(dirname $BASH_SOURCE) && pwd)
#创建数组,根据/进行分割
array=(${DIR_NAME//// })
#获取最后第二个元素
s_value=${array[${#array[*]}-2]}
#创建数组,根据.进行分割
array2=(${s_value//./ })
#获取第一个元素
s2_value=${array2[0]}
#echo $s2_value
#git --work-tree=/www/wwwroot/$s2_value checkout -f
git --work-tree=/www/wwwroot/$s2_value clean -fd
git --work-tree=/www/wwwroot/$s2_value checkout --force
sudo chown -R www.www /www/wwwroot/$s2_value
sudo chmod -R 777 /www/wwwroot/$s2_value

3、设置钩子文件的执行权限

1
chmod +x post-receive

4、将git用户放入www用户组

1
usermod -a -G www git

5、让git无密码sudo

1
2
3
vi /etc/sudoers
#追加写入
git ALL=(ALL) NOPASSWD: ALL
THE END