Coding项目webhook自动更新部署PHP源代码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Coding项目webhook自动更新部署PHP源代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1661字,纯文字阅读大概需要3分钟。
内容图文
![Coding项目webhook自动更新部署PHP源代码](/upload/InfoBanner/zyjiaocheng/597/05117515e09245dcbfe5952d928a22d5.jpg)
<?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);
}
}
内容总结
以上是互联网集市为您收集整理的Coding项目webhook自动更新部署PHP源代码全部内容,希望文章能够帮你解决Coding项目webhook自动更新部署PHP源代码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。