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项目相关推荐

  1. Vue项目自动部署【精简版】NuxtJS + GitHub Actions + Linux 自动部署学习(包含阿里云Linux ECS购买过程、传统部署流程、pm2、Github Actions)

    购买阿里云Linux服务器 如果已有服务器请直接跳转到[传统部署方式] 登录阿里云,访问 云服务器 ECS 购买地址:https://ecs-buy.aliyun.com/ 也可从首页导航菜单进入. ...

  2. git php自动发布,使用 Git Hooks 实现自动部署PHP项目

    最近正在寻找一种简便的自动部署代码到服务器的方式,然后就发现了git hooks这个方法,查了一些资料再自己尝试过后,觉得还不错,记录下. 什么是git hooks 在git上是这么介绍的: 和其它版 ...

  3. 项目添加到服务器报错,基于github+travis自动部署vue项目到远端服务器

    前期准备 github账号一个 一个vue的项目 一台linux服务器 travis中添加项目 travis是基于github的,所有只有github的账号可以登录travis,开发者必须有一个git ...

  4. 使用Github Actions自动部署vue项目到nginx服务器

    解决的问题:妈妈再也不担心我deploy时候手滑了 1. 避免手动执行重复的前端发布流程,节约开发时间和耐心 2. 减少了使用Jenkins类似的工具来做这种简单的发布流程,减少了第三方系统(Jenk ...

  5. 设置webhook_使用 WebHook 来自动部署 NodeJS 项目!

    前言 在我们本地开发好一个 NodeJS 项目,如果想要给别人看的话一般来说都是需要部署到服务器上面的.如果你使用 github 或者 coding 这里代码托管的服务,只需要在服务器安装好环境且安装 ...

  6. jenkins整合gitee自动部署SpringBoot项目

    文章目录 前提条件 一.服务器安装jenkins 方法一:简单快捷 第一步:将jenkens.war导入到系统 第二步:放在tomcat的webapp下面 第三步:访问http://ip:8080/j ...

  7. idea从gitlab拉项目到本地_Git入门-基础命令,用github免费服务器域名部署小项目...

    git基础命令学习,并用github Pages提供的免费服务器和域名部署个人前端. 学习长视频已经在我的西瓜视频发布,欢迎观看! 今天想跟大家分享一些关于git使用操作方面的知识,但是我觉得如果是讲 ...

  8. Gitlab CI/CD教程以及实战docker自动部署前端项目(全)

    目录 前言 1. 技术知识 1.1 docker安装gitlab 1.2 docker安装gitlab-runner 1.3 .gitlab-ci.yml编写 1.4 使用docker部署前端项目 1 ...

  9. Java自动部署maven_java项目自动部署方案(1):wagon-maven-plugin

    该方法适用于maven构建的项目,自动部署需要用到maven插件wagon-maven-plugin. 当配置插件后,部署流程如下: 客户端通过maven打包项目(package) 插件会自动将包上传 ...

  10. java 实现自动生成部署文档_jenkins的部署、实现自动拉取gitlab仓库代码、实现项目中代码自动部署以及项目关联触发......

    jenkins主机内存和gitlab主机内存最好配置4G及以上,防止各自的web端打不开 1.配置JDK环境 1)jdk解压到此目录 [root@localhost src]# pwd /usr/lo ...

最新文章

  1. 第六章|网络编程-socket开发
  2. 30年来我只坚持三件事
  3. Fiddler 从安装到使用 (creation of the root certificate wasn)
  4. python文字游戏 生成数字菜单_python自学日记5——文字游戏
  5. 【操作系统】信号量的用法
  6. 关于rnn神经网络的loss函数的一些思考
  7. 如何去痘痘最快方法简单
  8. 计算机光纤接口网卡,光纤网卡是什么?
  9. 笔记本风扇噪音大的解决方法
  10. 计算机网络——第一章 计算机网络体系结构
  11. 纯干货万字长文,(强烈建议收藏)一文通读Git使用教程
  12. 网易云音乐外链播放器代码的一个bug
  13. alisoft 开放旺旺SDK,我也来凑合一下
  14. RabbitMQ的基本概念以及绑定策略的简单演示
  15. 2023 樱花飘落官网单页HTML源码
  16. vim自动格式化代码转载
  17. 前序中序、中序后序以及前序后序构造二叉树
  18. Action Recognition(行为识别)
  19. Xilinx 7系列FPGA中CLB结构和内部资源使用
  20. 发现几个有趣的公众号!

热门文章

  1. 【unity】解决 2d-extras 的 CustomRuleTileMenu 脚本报错的问题
  2. 【解决方案】IP代理池设计与解决方案
  3. jquery click()方法模拟点击事件对a标签不生效的解决办法
  4. 解决java使用Runtime.exec执行linux复杂命令不成功问题
  5. 站点页面Service Unavailable 503的一种解决方法
  6. 【vue开发问题-解决方法】(九)使用element upload自定义接口上传文件,input多文件上传
  7. 自定义srv消息之ros
  8. jdbc获取数据库元数据,获取数据库列表,获取数据库基本信息,获取指定数据库中的表信息,获取指定表中的字段信息
  9. ListView的使用,PopupWindow菜单栏的使用android
  10. java只有jre_只安装了jre可以运行java程序吗