当我推送到存储库时,我已经设置了 github webhooooks 以将 POST 发送到我服务器上的 PHP 脚本。( https://help.github.com/articles/post-receive-hooks )
MY PHP 脚本记录连接 IP 以及收到的有效负载:
$date = strftime('%c');
file_put_contents('log.txt', PHP_EOL.trim($date).PHP_EOL, FILE_APPEND);
try
{
$payload = json_decode($_REQUEST['payload']);
}
catch(Exception $e)
{
exit(0);
}
//LOG THE POST REQUEST
file_put_contents('log.txt', print_r($payload, TRUE), FILE_APPEND);
//EXECUTE A SCRIPT WHEN THE POST REQUEST IS INITIALIZED
if ($payload->ref === 'refs/heads/master')
{
exec('deploy.sh >> log.txt');
}
从日志中,我可以看到当我推送到我的仓库时连接了一个 IP,但没有记录任何 POST 数据。我使用 RequestBin 进行了测试,并确认存在 POST 数据。此外,如果我在 URL 中手动放置一个 $_GET 有效负载变量,则会记录下来(因为我正在检查 $_REQUEST 而不仅仅是 $_POST)。我怀疑我的 PHP 服务器被配置为拒绝来自其他服务器的 POST 请求。我使用的是 1and1 共享主机,所以我没有专门的控制,但我可以通过 SSH 登录,也可以使用 .ini 文件在本地配置 PHP 设置。任何建议将不胜感激!
*我不在乎我是用 PHP 还是其他语言来做这件事。如果您认为使用 Python 或其他东西可能会更容易,那也很酷。
-杰里米