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 倉庫經常失敗。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。