Gitee部署WebHook

webhook是一个网络钩子吧,当我们操作git时会触发这个钩子,这个钩子就会向指定URL请求。

因为权限问题,捣鼓了半天才弄成功。

1、先建立处理请求的文件

/var/www/example/webhome/sw.php

<?php
// 此处action是留给自己手动测试使用的,passwd是在gitee仓库里面设置的webhook密码
$action = 'blue';
$passwd = '123456';
$goPass = isset($_SERVER['HTTP_X_GITEE_TOKEN']) && $_SERVER['HTTP_X_GITEE_TOKEN'] == $passwd;
if ($goPass || isset($_GET[$action])) {
    shell_exec("cd /var/www/example/sw && git pull origin master");
}

2、建立好这个文件后,返回到项目目录给钩子777权限(一开始不成功,我以为是没有执行权限,不管那么多,先给了再说)

chmod -R 777 webhome

3.给sw目录777权限

chmod -R 777 sw

4.建立仓库,并关联远程仓库(这里只是做关联操作,如果拉取远程仓库后,所创建的文件是属于当前登录的用户的,那么就会导致执行钩子的时候,不是同一个用户而失败。如果你非要拉取,那么拉取线上后 把所有文件的所有者都修改成运行git的那个用户,我这边运行git的用户是apache,执行chown apache:apache -R sw)

备注:其中特别需要注意的是文件及目录的权限(确保有写入,执行权限),还有就是本地仓库的文件 所有者,如果执行git命令时,所有者不同也就可能没有权限,会导致git pull失败。