PHP框架使用的是thinkphp6,服務(wù)器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'; }
服務(wù)器方面
注意開(kāi)啟函數(shù)shell_exec,需要開(kāi)啟網(wǎng)站用戶WWW sudo權(quán)限和免密操作,具體操作
編輯 /etc/sudoers,添加下面兩行
GITLAB方面
輸入你程序的訪問(wèn)地址,私密授權(quán)碼gitlab在發(fā)送請(qǐng)求的時(shí)候會(huì)添加到header里,上面程序中可以看到。經(jīng)過(guò)半天的測(cè)試終于成功,加雞腿。