github hooks 配置教程 钩子搭建(实测通过,手把手教程)
tips:如果本文对你有用,请爱心点个赞,提高排名,让这篇文章帮助更多的人。谢谢大家!❤
本人hooks搭建成功,全程参考JellyBool老师的视频教程,有不懂的可以先去看下这个视频,跟着操作。本文主要是以文档形式,教大家搭建git hooks.视频地址:https://www.codecasts.com/series/use-git-in-your-own-way/episodes/215
hooks搭建成功后,很方便,可以在本地直接推送代码到远程服务器端。实现实时推送的功能。
如果解决不了,可以在文末进群交流。
1.在github上创建仓库,并把服务器的代码推送到该仓库。
2.在linux中使用命令 ps -ef | grep php,查看执行php程序的用户。我的是nginx,执行用户是www用户。
3.使用命令:sudo ssh-kengen -t rsa -C "your_github_email"生成密钥,如果你不是root用户,会提示要求输入执行命令的用户密码。直接输入即可。我已经生成完毕,所以往下的我就不再截图做演示。下面的步骤都是直接回车,成功后有生成sshkey的路径,然后根据这个路径找到id_rsa.pub文件,并将文件内的内容,配置到github的公钥中。
4.分别执行以下两条命令配置github:
git config --global user.name "eric-zhou"
git config --global user.email "mengyilingjian@outlook.com"
5.执行命令 sudo -Hu www ssh-keygen -t rsa ,生成deploy-key。和第三步一样,将生成的id_rsa.pub文件内容,添加到项目中的webhooks选项 deploy keys中。
6.将服务器上的代码删除,使用命令 sudo -Hu www git clone git@github.com:eric-zhou/project.git ,重新克隆一份到服务器上。并在仓库中创建一个deploy.php.代码内容如下。这个php文件假设直接访问路径为是 https://abc.vyuan8.cn/vyuan/deploy.php。
<?php class Deployment { public $serect = 'mengling@1234333'; //webhooks中配置的密钥 public function deploy()
{
$requestBody = file_get_contents('php://input'); //每次推送的时候,会接收到post过来的数据。
$payload = json_decode($requestBody, true); //将数据转成数组,方便取值。
if(empty($payload)){
//写日志
$this->write_log('send fail from github is empty');exit;
}else{
//获取github推送代码时经过哈希加密密钥的值
$signature = $_SERVER['HTTP_X_HUB_SIGNATURE'];
} if (strlen($signature) > 8 && $this->isFromGithub($requestBody,$signature)) {
//验证密钥是否正确,如果正确执行命令。
$res = shell_exec("cd /alidata/www/phpwind/project &&
git pull 2>&1");
$res_log = "\n -------------------------".PHP_EOL;
$res_log .= '['.$payload['commits'][0]['author']['name'] . ']' . '向[' . $payload['repository']['name'] . ']项目的' . $payload['ref'] . '分支'.$_SERVER['X-GitHub-Event'].'了代码。commit信息是:'.$payload['commits']['message'].'。详细信息如下:' . PHP_EOL;
$res_log .= $res.PHP_EOL;
http_response_code(200);
$this->write_log($res_log);
}else{
$this->write_log('git 提交失败!');
abort(403);
}
} public function isFromGithub($payload,$signature)
{
//$hash是github的密钥。然后与本地的密钥做对比。
list($algo, $hash) = explode("=", $signature, 2);
return $hash === hash_hmac($algo, $payload, $this->serect);
} public function write_log($data)
{
// 此处加载日志类,用来记录git push信息,可以自行写。
}
} $deploy = new Deployment(); if($_SERVER['REQUEST_METHOD'] == 'POST'){
//触发此代码的时候,git是以post方式触发
$signature = $deploy->deploy();
}
7.配置webhooks。如下图:
secret是用来校验的一个密钥。可以自行设置。设置成功后,这个密钥要和deploy.php中的secret变量一样。具体不懂的,可以参考jellybool老师的视频,很详细。
8.使用git clone命令,在本地将仓库的代码克隆下来。然后使用git bash直接开始使用git push文件,就可以同步到服务器上了。
9.基本流程说明: 就是在本地使用git推送到仓库的时候,git会通过post的方式,请求设定的webhooks地址 https://abc.vyuan8.cn/vyuan/deploy.php。触发这个地址后,便执行php中的代码程序。
程序中先获取post过来的body数据,这个数据是json格式,转成数组后,可以拿到X-Hub-Signature这个值,然后用这个值和php中设定好的secret变量做哈希加密,进行对比。如果相等,则通过exce_shell函数执行git pull的动作。
post过来的数据,可以在git webhooks页面中看到。
10.本人实测效果如下
push前
、
push后:
刷新网页:
日志记录信息:
以上代码本人亲自测试,如果还是不会请先看视频,然后再进群提问。群二维码如果过期,可加我微信:mengyilingjian。
如果成功了,请点个赞,谢谢~

github hooks 配置教程 钩子搭建(实测通过,手把手教程)的更多相关文章
- Chevereto免费图床搭建教程 | vps搭建免费图床教程
Chevereto免费图床搭建教程 | vps搭建免费图床教程 本文首发于:https://chens.life/How-to-build-a-free-image-bed.html 前言 自从有了个 ...
- VPS教程:搭建个人网盘教程—kodexplorer
kodexplorer网盘系统.Kodexplorer,也叫芒果云.可道云.kodcloud,总之名字改了不少.但其本身作为一个网盘文件系统,还是有很多可圈可点的地方. seafile.h5ai.ko ...
- 可能是最详细的 Hexo + GitHub Pages 搭建博客的教程
前言:博主目前大三,Web 前端爱好者.写博客的好处,不是为了写而写,而是一个记录思想的过程.不要考虑它能带给你什么,而是你自己从中收获了什么. 最近刚好有空,于是就参照网上的各种教程,搭建了一个博客 ...
- GitHub笔记(五)——忽略文件、配置别名、搭建服务器
六.忽略文件 忽略某些文件时,需要编写.gitignore: .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理! 忽略文件的原则是: 忽略操作系统自动生成的文件,比 ...
- GitHub+Hexo 搭建个人网站详细教程
原文链接 GitHub+Hexo 搭建个人网站详细教程 前言: 随着互联网浪潮的翻腾,国内外涌现出越来越多优秀的社交网站让用户分享信息更加便捷.然后,如果你是一个不甘寂寞的程序猿(媛),是否也想要搭建 ...
- kubernetes(K8S)快速安装与配置集群搭建图文教程
kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...
- GitHub搭建个人网站详细教程
GitHub搭建个人网站详细教程: http://blog.csdn.net/gane_cheng/article/details/52203759
- github page 配置hexo 博客 的常见错误
缘起 最近看到好多的公众号作者推荐大家搭建自己的博客,自己手痒也搭建了一个个人博客lumang,具体过程就是一开始上网搜索一番教程,按照教程开始搭建,由于是windows的环境,同时教程也有很多的老旧 ...
- 一步一步使用ABP框架搭建正式项目系列教程之本地化详解
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...
随机推荐
- Springboot 条件注解
@Conditional 根据满足某一个特定条件创建一个特定的 Bean.就是根据特定条件来控制 Bean 的创建行为,这样我们可以利用这个特性进行一些自动的配置 Springboot 中大量用到了条 ...
- 011-Spring aop 002-核心说明-切点PointCut、通知Advice、切面Advisor
一.概述 切点Pointcut,切点代表了一个关于目标函数的过滤规则,后续的通知是基于切点来跟目标函数关联起来的. 然后要围绕该切点定义一系列的通知Advice,如@Before.@After.@Af ...
- mysql查看连接情况
1.使用navicat进入命令行或者命令行进入mysql 2.看所有进程 show full processlist; 3.看所有连接show status like 'Threads%';
- Egret HTML5游戏开发指南
Egret HTML5游戏开发指南 下载地址:https://pan.baidu.com/s/1fuxllvmRhWXoWDwH4gxN9g 关注微信公众号获取提取码: 输入:egrt 获取提取码
- Zabbix 3.0 配置企业微信报警(注册---测试)
一.申请企业微信 1.登录企业微信官网,点击企业注册 二.配置企业微信 1.邀请管理员使用企业微信,如果有多个人直接添加新成员 2.管理员收到邀请,下载手机版企业微信,使用微信号登陆即可 3.创建应用 ...
- nodejs调试工具 node-inspect
1.安装 npm install -g node-inspect 2.chrome设置 chrome://flags/#enable-devtools-experiments 3.测试 测试代码mai ...
- 【快捷键】【idea】的eclipse格式化快捷键Ctrl+Shift+F与win10冲突的解决方法
1.多按一个win键解决[Ctrl+Shift+Win+F],试了一下,只要F键最后按就可以了 注意:win键就是微软的logo键 2.先按Ctrl+F,然后松开F键[注意不要松开Ctrl键],再按S ...
- 将网页html文件离线下载保存到本地的方法
(1)复制想要离线的网页的网址: 范例:http://bbs.xyaz.cn/thread-52540-1-1.html (2)将网址放入迅雷中,让其将html文件下载下来. (3)下载结果
- [转帖]NSO到底是个什么样的公司?揭秘三叉戟0day的缔造者
NSO到底是个什么样的公司?揭秘三叉戟0day的缔造者 dawner2016-09-07共248912人围观 ,发现 3 个不明物体其他安全报告 https://www.freebuf.com/art ...
- JavaSE面试题:类初始化和实例初始化等
类初始化过程 1.一个类要创建实例需要先加载并初始化该类 main方法所在的类需要先加载和初始化 2.一个子类要初始化需要先初始化父类 3.一个类初始化就是执行<clinit>()方法 & ...







、

