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里,上面程序中可以看到。經過半天的測試終于成功,加雞腿。