Skip to content

cyfx/webhook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

基于github/gitlab的webhook接收更新
查看手册 · 报告错误 · 贡献代码

目录

关于项目

背景

提交github的代码,每次都要手动pull到服务器,所以就使用github自带的webhooks功能

解决什么问题

  1. 部署到服务器,当git有push时,服务器可以同步更新git代码。
  2. 当有多个项目的时候,可以只部署一套webhook,多个项目共用这个代码

入门

支持单项目git同步,或者多项目git同步

先决条件

  1. 服务器已经安装好git环境,并配置好对应的git账号权限
  2. php不能禁用shell_exec函数
  3. 代码执行用户要有项目文件夹的更新权限,php_basedir要有权限

安装

  1. 直接复制webhook.php,保存到项目目录/webhook.php
  2. 修改代码里面keys的配置,默认是default, 把项目目录填写到path里面,secret是webhook加密的key, 建议一定要写,至少20位随机字符
$keys = [
        'default' => [
            'path' => '/www/wwwroot/test',
            'secret' => ''
        ]
    ];
  1. 如果是多项目更新,数组可以填写多个,只需要配置的webhook地址的时候,get传参数把project名称传递过来即可
$keys = [
        'default' => [
            'path' => '/www/wwwroot/test',
            'secret' => ''
        ],
        'project2' => [
            'path' => '',
            'secret' => ''
        ],
    ];
  1. 到github/gitlab配置webhooks 路径是setting > webhooks, 新建钩子。 Payload URL填写通知域名, 默认项目更新可以不用加project参数
http://你的域名/webhook.php?project=project2

通知触发一般push实践触发就行了。

secret记得要配置和代码里面的一致

webhook

  1. 现在提交下git就会自动触发更新了。

用法

代码push到github/gitlab,就会触发webhooks,然后会触发webhook.php,执行git拉取命令。

调试

1. 调试接口

github提供最近提交的事件细节,可以进入钩子详情,查看github请求头和body参数,以及请求响应。更新错误的时候,可以通过重发事件请求,来重现bug。

2. 失败问题

如果一直更新失败,一般是权限问题,或者用户密钥问题 进入项目目录,执行下面的命令,如果有权限问题,处理好,之后就可以使用了

sudo -u www git pull

3. 密钥认证失败

github的用户ssh密钥/home/www/目录下的.ssh要有,这样就才不用有密钥错误

产品规划

thinkphp

增加thinkphp5.1集成版本

贡献

@cyfx

License

The code for Payment is distributed under the terms of the MIT license (see LICENSE).

联系我们

致谢

捐赠

如果你觉得这个项目有用,你可以给作者买一杯果汁🍹

pay

About

git自动部署

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages