webhooks php,GitHub和WebHooks自动部署PHP项目

webhook请求的接口

前面有说过了,这个接口实际上是执行git pull将代码更新到服务器项目中,下面是php版本代码。

// 本地仓库路径 既项目路径

$local = '/data/web/testWebHooks';

// 如果仓库目录不存在,返回错误

if (!is_dir($local)) {

header('HTTP/1.1 500 Internal Server Error');

die('Local directory is missing');

}

//如果请求体内容为空,返回错误

if (!isset($_POST['payload'])) {

header('HTTP/1.1 400 Bad Request');

die('HTTP HEADER or POST is missing.');

}

// 上图中第2步的Content Type是application/x-www-form-urlencoded,所应用post接受

$payload = json_decode($_POST['payload'], true);

// 签名

if (!isset($_SERVER['HTTP_X_HUB_SIGNATURE']) || !$_SERVER['HTTP_X_HUB_SIGNATURE']) {

header('HTTP/1.1 403 Bad Request');

die('Permission denied.' . json_encode($_SERVER));

}

$signature = $_SERVER['X-Hub-Signature'];

list($algo, $hash) = explode('=', $signature, 2);

//计算签名

$secret = '******';// 上图中第三部填写的密码

$payloadHash = hash_hmac($algo, $payload, $secret);

if ($hash !== $payloadHash){

header('HTTP/1.1 403 Bad Request');

die($signature . ' ' . $_SERVER['X-Hub-Signature']);

}

复制代码

这是一个php脚本,主要有两个功能,一个是校验,另一个是更新代码。校验是为了防止你的脚本被别人一直请求,第二个就是从git上拉取代码并更新。

如果你的项目是vue或者是其他需要编译的项目,可以在更新代码之后执行编译过程。

在git上填写信息之后,会自动去请求这个接口进行测试,http返回200表示成功。具体的请求记录在提交信息下方的Recent Deliveries

注意

1.确保PHP正常执行系统命令。写一个PHP文件,内容:

复制代码

在通过浏览器访问这个文件,能够输出目录结构说明PHP可以运行系统命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值