gitlab 配置webhook实现PHP自动拉取

程序猿 2022-03-17 11:32:20 750浏览 加载中

PHP框架使用的是thinkphp6,服务器centos7.5,宝塔面板。

程序方面

public function gitPull()
{
    $path = $this->app->getRootPath();
    $token = "xxxxxxxxxxx";
    $header = $this->request->header('x-gitlab-token');

    if (empty($header) || $header !== $token) {
        $a = "-----------------ERROR---------------------" . PHP_EOL;
        file_put_contents('git_log.txt',$a,FILE_APPEND);
        return  'error1';
    }
    $time = date('Y-m-d H:i:s');
    $a = "-----------start----------{$time}-----------------------------------------". PHP_EOL;
    $cmd = "cd {$path} && git reset --hard";
    $a .= shell_exec($cmd);

    $cmd = "cd {$path} && sudo git pull 2>&1";
    $a .= shell_exec($cmd);

    $cmd = "cd {$path} && sudo chown -R www:www * 2>&1";
    $a .= shell_exec($cmd);
    $time = date('Y-m-d H:i:s');
    $a .= "-----------End----------{$time}-----------------------------------------" . PHP_EOL. PHP_EOL. PHP_EOL;
    file_put_contents('git_log.txt',$a,FILE_APPEND);
    return 'ok1';
}

服务器方面

注意开启函数shell_exec,需要开启网站用户WWW sudo权限和免密操作,具体操作

编辑 /etc/sudoers,添加下面两行

4444.png

GITLAB方面

123.png

输入你程序的访问地址,私密授权码gitlab在发送请求的时候会添加到header里,上面程序中可以看到。经过半天的测试终于成功,加鸡腿。

标签:
最后修改:2022-10-06 09:38:12

非特殊说明,本博所有文章均为博主原创。