① 在 Gitee 仓库配置 WebHook
-
打开你的仓库 → 管理 → WebHooks 点击 添加 WebHook 配置:
URL:域名/api/deploy/webhook
密码/签名密钥:比如 haha123123(随便生成一个复杂点的字符串) 推送事件:选择 Push(即可触发)

②在 Webman 端创建接收接口
在 /api/deploy/webhook这个路由下写代码
<?php
namespace app\controller;
use support\Request;
use support\Response;
class DeployController
{
public function webhook(Request $request): Response
{
$secret = 'haha123123'; // 和 Gitee WebHook 配置的密码保持一致
$payload = $request->rawBody();
$signature = $request->header('X-Gitee-Token'); // Gitee 发送的 Token
// 验证签名
if ($signature !== $secret) {
return json(['code' => 403, 'msg' => '签名错误']);
}
// 执行部署命令(建议使用队列或后台任务执行)
$cmd = 'sudo /usr/bin/git -C /www/wwwroot/imchat/tg_chat_admin_api pull 2>&1';
$output = shell_exec($cmd);
return json([
'code' => 200,
'msg' => '部署完成',
'output' => $output,
]);
}
}
③ 验证方式说明
Gitee 的 WebHook 会在请求头带上 X-Gitee-Token
这个值就是你配置的 “WebHook 密码/签名密钥”
只要对比 $request->header(‘X-Gitee-Token’) 和你的密钥是否一致,就能完成鉴权
④ 有时候在Ubuntu系统中,需要sudo su最高权限
编辑 sudoers 文件:
sudo visudo
给 www 用户设置免密码执行 git:(注意,需要看你的实际用户)
然后在文件末尾加一行:
www ALL=(ALL) NOPASSWD:/usr/bin/git
在文件末尾加入(允许 www 用户免密码执行 git):
📝 如果是默认的 nano 编辑器
(Ubuntu 默认使用 nano 打开)
- 按下 Ctrl + O (字母 O,不是数字 0) → 保存
- 按下 Enter 确认文件名
- 按下 Ctrl + X → 退出编辑器
📝 如果是 vim 编辑器
(如果系统用的是 vim)
- 按下 Esc
- 输入 :wq
- 回车
保存后会自动校验语法正确性并退出。
✅ 没有报错就说明配置成功了。
521

被折叠的 条评论
为什么被折叠?



