【WebHook】宝塔+gitee+webhook 实现自动拉取代码

原理:

在这里插入图片描述

在我们完成某个功能后,向git推送代码后,git会主动发起一个web请求到我们设置的api,通过api执行shell语句完成git pull的操作


环境配置:

提示:这里以安装了宝塔面板的linux系统为例

账户设置

Gitee发送来的Post请求默认用户为www,需要为`www用户设置公钥`
www用户默认不可登录,通过以下命令暂时登录www用户,切记完成公钥设置后权限改回来

进入权限设置

vi /etc/passwd

找www用户把权限/sbin/nologin改成/bin/bash(切记完成设置后记得改回来)

2. 公钥设置

生成公钥(使用www用户执行)

ssh-keygen -t rsa -C "test@qq.com" # 填自己的邮箱

在这里插入图片描述
查看刚刚生成的公钥,目录可能会变化,注意看控制台输出

cat ~/.ssh/id_rsa.pub

在这里插入图片描述
然后去gitee添加生成的公钥
在这里插入图片描述

配置webhook代码(PHP例子):

不一定使用PHP,只要是能执行shell的api就可以

贴代码:


<?php
header("Content-type: text/html; charset=gb2312");
$requestBody = file_get_contents("php://input");
if (empty($requestBody)) {
    die('error');
}
$content = json_decode($requestBody, true);
if ($content['password'] == 'gitee上面设置的推送密码') {
    exec("cd 网站运行目录;git pull",$res);
    $res_log = '------------------' . PHP_EOL;
    $res_log .= '仓库用户 ' . $content['user_name'];
    $res_log .= ' 在 ' . date('Y-m-d H:i:s');
    $res_log .= ' 向 ' . $content['repository']['name'];
    $res_log .= ' 项目的 ' . $content['ref'] . ' 分支 push 了 ' . $content['total_commits_count'] . ' 个 commit:' . PHP_EOL;
    $res_log .= json_encode($res) . PHP_EOL;
    file_put_contents("webhook_".time().".log", $res_log, FILE_APPEND);
}

其中exec大部分为php禁用函数,需要自行去php.ini中开启。

建议这里的php版本单独使用一个,不与系统执行使用php共用。

然后将url填入gitee的webhooks设置页即可

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员江河

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值