了解webhook很久了,今天在自己的服务器上测试了一把,原理很简单,大致如下:
1.本地提交代码
2.服务器接收到提交代码请求后,向webhook指定的链接地址发起一个请求,调用指定程序在服务端拉取提交的代码
webhook的代码很简单,执行一下git pull
命令即可
本文使用coding.net作为git代码仓库
下面以php代码为例:
//1.得到代码仓库传过来的参数
$post_data = json_decode(file_get_contents("php://input"));
//2. 判断token是否合法
if($post_data->token === 'your token') {
//实际编写中遇到没有设置用户名和邮箱的问题,所以这时里我多运行了一次
shell_exec("git config --global user.email 你的邮箱");
shell_exec("git config --global user.name 你的用户名");
//这里得到当前文件所在目录
$pwd = getcwd();
//因为我使用的是laravel框架,webhook.php文件我放在public下面的,所以这里多运行了一个cd ..
$command = 'cd ' . $pwd . ' && cd .. && git pull 2>&1';
$status = shell_exec($command);
print $status;
}
说明:
- webhook文件放的目录需要与你代码中执行的路径相对应,比如说我这里文件是放在public里面的,所以我在得到当前目录后,又多运行了一次
cd ..