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可以运行系统命令。
webhooks php,GitHub和WebHooks自动部署PHP项目相关推荐
- Vue项目自动部署【精简版】NuxtJS + GitHub Actions + Linux 自动部署学习(包含阿里云Linux ECS购买过程、传统部署流程、pm2、Github Actions)
购买阿里云Linux服务器 如果已有服务器请直接跳转到[传统部署方式] 登录阿里云,访问 云服务器 ECS 购买地址:https://ecs-buy.aliyun.com/ 也可从首页导航菜单进入. ...
- git php自动发布,使用 Git Hooks 实现自动部署PHP项目
最近正在寻找一种简便的自动部署代码到服务器的方式,然后就发现了git hooks这个方法,查了一些资料再自己尝试过后,觉得还不错,记录下. 什么是git hooks 在git上是这么介绍的: 和其它版 ...
- 项目添加到服务器报错,基于github+travis自动部署vue项目到远端服务器
前期准备 github账号一个 一个vue的项目 一台linux服务器 travis中添加项目 travis是基于github的,所有只有github的账号可以登录travis,开发者必须有一个git ...
- 使用Github Actions自动部署vue项目到nginx服务器
解决的问题:妈妈再也不担心我deploy时候手滑了 1. 避免手动执行重复的前端发布流程,节约开发时间和耐心 2. 减少了使用Jenkins类似的工具来做这种简单的发布流程,减少了第三方系统(Jenk ...
- 设置webhook_使用 WebHook 来自动部署 NodeJS 项目!
前言 在我们本地开发好一个 NodeJS 项目,如果想要给别人看的话一般来说都是需要部署到服务器上面的.如果你使用 github 或者 coding 这里代码托管的服务,只需要在服务器安装好环境且安装 ...
- jenkins整合gitee自动部署SpringBoot项目
文章目录 前提条件 一.服务器安装jenkins 方法一:简单快捷 第一步:将jenkens.war导入到系统 第二步:放在tomcat的webapp下面 第三步:访问http://ip:8080/j ...
- idea从gitlab拉项目到本地_Git入门-基础命令,用github免费服务器域名部署小项目...
git基础命令学习,并用github Pages提供的免费服务器和域名部署个人前端. 学习长视频已经在我的西瓜视频发布,欢迎观看! 今天想跟大家分享一些关于git使用操作方面的知识,但是我觉得如果是讲 ...
- Gitlab CI/CD教程以及实战docker自动部署前端项目(全)
目录 前言 1. 技术知识 1.1 docker安装gitlab 1.2 docker安装gitlab-runner 1.3 .gitlab-ci.yml编写 1.4 使用docker部署前端项目 1 ...
- Java自动部署maven_java项目自动部署方案(1):wagon-maven-plugin
该方法适用于maven构建的项目,自动部署需要用到maven插件wagon-maven-plugin. 当配置插件后,部署流程如下: 客户端通过maven打包项目(package) 插件会自动将包上传 ...
- java 实现自动生成部署文档_jenkins的部署、实现自动拉取gitlab仓库代码、实现项目中代码自动部署以及项目关联触发......
jenkins主机内存和gitlab主机内存最好配置4G及以上,防止各自的web端打不开 1.配置JDK环境 1)jdk解压到此目录 [root@localhost src]# pwd /usr/lo ...
最新文章
- 第六章|网络编程-socket开发
- 30年来我只坚持三件事
- Fiddler 从安装到使用 (creation of the root certificate wasn)
- python文字游戏 生成数字菜单_python自学日记5——文字游戏
- 【操作系统】信号量的用法
- 关于rnn神经网络的loss函数的一些思考
- 如何去痘痘最快方法简单
- 计算机光纤接口网卡,光纤网卡是什么?
- 笔记本风扇噪音大的解决方法
- 计算机网络——第一章 计算机网络体系结构
- 纯干货万字长文,(强烈建议收藏)一文通读Git使用教程
- 网易云音乐外链播放器代码的一个bug
- alisoft 开放旺旺SDK,我也来凑合一下
- RabbitMQ的基本概念以及绑定策略的简单演示
- 2023 樱花飘落官网单页HTML源码
- vim自动格式化代码转载
- 前序中序、中序后序以及前序后序构造二叉树
- Action Recognition(行为识别)
- Xilinx 7系列FPGA中CLB结构和内部资源使用
- 发现几个有趣的公众号!
热门文章
- 【unity】解决 2d-extras 的 CustomRuleTileMenu 脚本报错的问题
- 【解决方案】IP代理池设计与解决方案
- jquery click()方法模拟点击事件对a标签不生效的解决办法
- 解决java使用Runtime.exec执行linux复杂命令不成功问题
- 站点页面Service Unavailable 503的一种解决方法
- 【vue开发问题-解决方法】(九)使用element upload自定义接口上传文件,input多文件上传
- 自定义srv消息之ros
- jdbc获取数据库元数据,获取数据库列表,获取数据库基本信息,获取指定数据库中的表信息,获取指定表中的字段信息
- ListView的使用,PopupWindow菜单栏的使用android
- java只有jre_只安装了jre可以运行java程序吗