Gitee自动部署

① 在 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 打开)

  1. 按下 Ctrl + O (字母 O,不是数字 0) → 保存
  2. 按下 Enter 确认文件名
  3. 按下 Ctrl + X → 退出编辑器

📝 如果是 vim 编辑器
(如果系统用的是 vim)

  1. 按下 Esc
  2. 输入 :wq
  3. 回车

保存后会自动校验语法正确性并退出。
✅ 没有报错就说明配置成功了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值