banner
阿凯

阿凯的生活记录

日拱一卒,对生活充满热爱!

webhook实时拉取Github仓库

博客域名没有备案,而自己有香港的服务器,可以用来同步 Github 仓库的静态文件。

这样就可以让 Gridea 的博客内容,同步到 Github 后,再被宝塔面板的 webhook 拉取到本地目录。
域名国外解析到 Github,国内解析到自己的服务器,实现网站的访问加速。

首先服务器上需要已经安装了宝塔面板,我习惯用这个面板,其他方式安装 webhook 也没问题。

宝塔面板安装 webhook 插件后,创建一个 hook,添加下面的脚本,只需要修改 git 地址,其他的不用改。

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ]; then
                echo "param参数错误"
        echo "End"
        exit
fi
#git项目路径
gitPath="/www/wwwroot/$1"
#git 网址
gitHttp="https://github.com/xxxxx.git" #只需要修改成仓库的git地址,其他地方默认不修改

echo "Web站点路径:$gitPath"

#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                sudo git clone $gitHttp gittemp
                sudo mv gittemp/.git .
                sudo rm -rf gittemp
        fi
        echo "拉取最新的项目文件"
        sudo git reset --hard origin/master
        sudo git pull        
        echo "设置目录权限"
        sudo chown -R www:www $gitPath
        echo "End"
        exit
else
        echo "该项目路径不存在"
                echo "新建项目目录"
        mkdir $gitPath
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                sudo git clone $gitHttp gittemp
                sudo mv gittemp/.git .
                sudo rm -rf gittemp
        fi
        echo "拉取最新的项目文件"
        sudo git reset --hard origin/master
        sudo git pull
        echo "设置目录权限"
        sudo chown -R www:www $gitPath
        echo "End"
        exit
fi

保存后,点击查看密钥,如下:

宝塔WebHook使用方法:
GET/POST:
http://服务器ip:端口/hook?access_key=HOOK密钥&param=aaa
@param access_key string HOOK密钥
@param param string 自定义参数(在hook脚本中使用$1接收)

== 注意粘贴前把网址最后的 aaa 换成你的宝塔对应静态博客的网站的目录名 ==
例如我的网站路径 wwwroot/blog,就把 ==aaa== 替换成 ==blog==
如果不替换的话,会在你的服务器根目录创建一个 aaa 目录,你把站点目录修改为 aaa 目录,也可以。

复制上面自动生成的链接,粘贴到 Github 的 webhook 设置
544a24a32d1aa

内容类型选择 ==json==,secret 就是 webhook 的一串密钥,复制过去粘贴,其他默认,保存提交。

然后去 Gridea 提交更新博客,再看 Webhook 的日志,再检查目录下有没有文件就能看到是否同步成功了。

当 Github 的版本库代码更新时,通过 git 的 webhook(git web 钩子)触发 push 事件。用户提交代码(git push)服务器的宝塔 webhook 插件拉取当前 git 最新代码(git pull)

== 注意:== 阿里云国内服务器使用 webhook 拉取 github 仓库经常失败。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。