<?php
ini_set('date.timezone','Asia/Shanghai');
$data = file_get_contents("php://input");
if(empty($data)){
return ;
}
$gitJsonData=json_decode($data,true);
if(empty($gitJsonData['project']['name'])){
file_put_contents("./error.log",
"\r\n========================".date('Y-m-d H:i:s')."========================\r\n".
"1.gitJsonData['project']['name'] is NULL!\r\n".
"================================end================================\r\n",
FILE_APPEND);
return false;
}
$dir=$gitJsonData['project']['name'];//api.uarein.ccc
$version = explode("/", $gitJsonData['ref']);
//e.g /home/www/uarein/api.uarein.ccc/master
$projectdir = "/home/www/uarein/{$dir}/{$version[2]}";
if(is_dir($projectdir) == false){//添加
try{
//$s = mkdir($projectdir,0777,true);
$cmd = "git clone http://user:password@git.uarein.ccc:10080/root/{$dir}.git -b {$version[2]} {$projectdir}";
$s = shell_exec($cmd);
file_put_contents("./create.log",
"\r\n========================".date('Y-m-d H:i:s')."========================\r\n".
"cmd={$cmd}\r\n".
"================================end================================\r\n",
FILE_APPEND);
}catch (Exception $e){
file_put_contents("./error.log",
"\r\n========================".date('Y-m-d H:i:s')."========================\r\n".
print_r($e,true)."\r\n".
"================================end================================\r\n",
FILE_APPEND);
}
return ;
}else{//更新
$cmd = "cd {$projectdir} && git pull http://user:password@git.uarein.ccc:10080/root/{$dir}.git";
$s = shell_exec($cmd);
file_put_contents("./update.log",
"\r\n========================".date('Y-m-d H:i:s')."========================\r\n".
$s."$projectdir\r\n".
"================================end================================\r\n",
FILE_APPEND);
}
?>
原文链接:gitlab webhook php,转载请注明来源!