//作为接口传输的时候认证的密钥
$valid_token = 'shfdksjdakjshdfjknvkja';
$client_token = $_GET['token'];
$project = $_GET['project']; //多个项目
$client_ip = $_SERVER['REMOTE_ADDR'];
$fs = fopen('./auto_hook.log', 'a');
fwrite($fs, '============================开始==============================='.PHP_EOL);
fwrite($fs, '时间:'.date("Y-m-d H:i:s", time()).',请求来自:['. $client_ip.']'.PHP_EOL);
if ($client_token !== $valid_token) {
fwrite($fs, "TKOEN 错误-- [{$client_token}]".PHP_EOL);
fclose($fs);
exit(0);
}
$json = file_get_contents("php://input");
$data = json_decode($json, true);
fwrite($fs, 'Data: '.print_r($data, true).PHP_EOL);
//这里也可以执行自定义的脚本文件updata.sh,脚本内容可以自定义
switch ($project) {
case 'web':
$res = exec("/home/www/hook.sh", $result);
break;
}
fwrite($fs, 'Data:'. print_r($result, true).PHP_EOL);
fwrite($fs, '============================结束==============================='.PHP_EOL);
fclose($fs);
var_dump($result);
接下来通过浏览器访问测试:http://www.xxxxx.com/webhook.php?token=shfdksjdakjshdfjknvkja&project=web
访问后,如果能返回git执行的信息,就表示成功了。接下来就是配置gitlab的webhooks。
为支持多个项目 配置了project参数,可以部署多个项目。只需要在gitlab钩子中配置时,使用不同的project参数。
触发事件自己选择
部署完成后,修改/etc/passwd文件,将www用户修改为nologin即可!