首先我的线上部署环境是在宝塔。你们自己环境自己配置。
1.在宝塔服务器创建站点
在本地创建一个触发勾子的php脚本
代码如下
<?php
//GitHub Webhook Secret.
//GitHub项目 Setting/Webhooks中的Secret
$secret = "liangqigeng";
//Path to your respostory on your server.
//e.g. "/var/www/respostory"
//项目地址
$path = "/www/wwwroot/webhook.liangqigeng.top";
//Headers deliveried from Github
$signature = $_SERVER['HTTP_X_HUB_SIGNATURE'];
if($signature){
$hash = "sha1=".hash_hmac('sha1',file_get_contents("php://input"),$secret);
if(strcmp($signature,$hash)==0){
echo shell_exec("cd {$path} && /usr/bin/git reset --hard origin/master && /usr/bin/git clean -f && /usr/bin/git pull 2>&1");
exit();
}
}
http_response_code(404);
?>
这里用到的php代码会用到shell_exec函数
而宝塔默认是禁用这个函数的,你需要在软件商店的使用的对应php版本禁用函数把这个函数从列表删除即可
2.推送本地上远程同时配置github的勾子