基于github/gitlab的webhook接收更新
查看手册
·
报告错误
·
贡献代码
提交github的代码,每次都要手动pull到服务器,所以就使用github自带的webhooks功能
- 部署到服务器,当git有push时,服务器可以同步更新git代码。
- 当有多个项目的时候,可以只部署一套webhook,多个项目共用这个代码
支持单项目git同步,或者多项目git同步
- 服务器已经安装好git环境,并配置好对应的git账号权限
- php不能禁用
shell_exec函数 - 代码执行用户要有项目文件夹的更新权限,php_basedir要有权限
- 直接复制webhook.php,保存到项目目录/webhook.php
- 修改代码里面keys的配置,默认是default, 把项目目录填写到path里面,secret是webhook加密的key, 建议一定要写,至少20位随机字符
$keys = [
'default' => [
'path' => '/www/wwwroot/test',
'secret' => ''
]
];- 如果是多项目更新,数组可以填写多个,只需要配置的webhook地址的时候,get传参数把project名称传递过来即可
$keys = [
'default' => [
'path' => '/www/wwwroot/test',
'secret' => ''
],
'project2' => [
'path' => '',
'secret' => ''
],
];- 到github/gitlab配置webhooks 路径是setting > webhooks, 新建钩子。 Payload URL填写通知域名, 默认项目更新可以不用加project参数
http://你的域名/webhook.php?project=project2
通知触发一般push实践触发就行了。
secret记得要配置和代码里面的一致
- 现在提交下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要有,这样就才不用有密钥错误
增加thinkphp5.1集成版本
The code for Payment is distributed under the terms of the MIT license (see LICENSE).
如果你觉得这个项目有用,你可以给作者买一杯果汁🍹

