webhook实时拉取Github仓库

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

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

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

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

Copy
#!/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

保存后，点击查看密钥，如下：

Copy
宝塔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 设置

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

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

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

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