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,添加下面两行
GITLAB方面
输入你程序的访问地址,私密授权码gitlab在发送请求的时候会添加到header里,上面程序中可以看到。经过半天的测试终于成功,加鸡腿。