# webhook **Repository Path**: chenyifang/webhook ## Basic Information - **Project Name**: webhook - **Description**: 给gitee的webhook使用 - **Primary Language**: PHP - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-01 - **Last Updated**: 2023-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Logo

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

## 目录 * [关于项目](#关于项目) * [背景](#背景) * [解决什么问题](#解决什么问题) * [入门](#入门) * [先决条件](#先决条件) * [安装](#安装) * [用法](#用法) * [调试](#调试) * [产品规划](#产品规划) * [贡献](#贡献) * [License](#license) * [捐赠](#捐赠) ## 关于项目 ### 背景 提交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位随机字符 ```php $keys = [ 'default' => [ 'path' => '/www/wwwroot/test', 'secret' => '' ] ]; ``` 3. 如果是多项目更新,数组可以填写多个,只需要配置的webhook地址的时候,get传参数把project名称传递过来即可 ```php $keys = [ 'default' => [ 'path' => '/www/wwwroot/test', 'secret' => '' ], 'project2' => [ 'path' => '', 'secret' => '' ], ]; ``` 4. 到github/gitlab配置webhooks 路径是setting > webhooks, 新建钩子。 Payload URL填写通知域名, 默认项目更新可以不用加project参数 ``` http://你的域名/webhook.php?project=project2 ``` 通知触发一般`push`实践触发就行了。 **secret记得要配置和代码里面的一致** webhook 5. 现在提交下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](https://github.com/cyfx) ## License The code for Payment is distributed under the terms of the MIT license (see [LICENSE](LICENSE)). ## 联系我们 ## 致谢 ## 捐赠 如果你觉得这个项目有用,你可以给作者买一杯果汁🍹 pay