coding可以部署php项目吗,Coding项目webhook自动更新部署PHP源代码

/*

* Coding webhooks自动更新程序

* $log_dir 日志存放目录

* $name 站点标识字符,也是站点目录名称

* $token Coding新版本的webhook若是设置了token,Coding则对每个请求进行了哈希签名,

* 这个签名会放在请求头X-Coding-Signature,在服务器端进行签名解析才能拿到真正数据

* $p_dir 项目根目录

* author: 王小滔

* date: 2020-11-23

*/

$name = $_GET['app'];

$token = 'token2020';

$p_dir = '/www/wwwroot/' . $name;

$log_dir = '/www/wwwroot/webhook/logs/' . $name . '/';

is_dir($log_dir) or mkdir($log_dir, 0777, true);

// 接收Coding post传递的参数

$json = file_get_contents("php://input");

// 从请求头中获取签名

$signature = $_SERVER['HTTP_X_CODING_SIGNATURE'];

// 进行签名解析

$sha1 = hash_hmac("sha1", $json, $token);

$calculate_signature = 'sha1='. $sha1;

// 进行身份验证

if ($calculate_signature !== $signature) {

exit('error request');

}

// 写入更新日志

$data = json_decode($json, true);

if (isset($data['ref']) && isset($data['commits'])) {

if ($data['ref'] == 'refs/heads/master') {

$res = PHP_EOL . "pull start ---------------------------------------------" . PHP_EOL;

$res .= shell_exec("cd {$p_dir} && git checkout -f && git pull origin master 2>&1");

$res_log = '------------------------------------------------------------' . PHP_EOL;

$res_log .= '项目更新,目录:' . $p_dir . PHP_EOL;

$res_log .= $data['sender']['name'] . ' 在 ' . date('Y-m-d H:i:s'). ' 向 ' . $data['repository']['name'] . ' 项目的 ' . $data['ref'] . ' 分支push了 ' . $data['commits']['message'];

$res_log .= $res . PHP_EOL;

$res_log .= "pull end -----------------------------------------------------" . PHP_EOL;

file_put_contents($log_dir . $name . "_" . date('Ymd'). ".txt", $res_log, FILE_APPEND);

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值