# 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
基于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记得要配置和代码里面的一致**
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)).
## 联系我们
## 致谢
## 捐赠
如果你觉得这个项目有用,你可以给作者买一杯果汁🍹
