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 "開始"
# 宝塔WebHookパラメータが存在するか確認
if [ ! -n "$1" ]; then
                echo "paramパラメータエラー"
        echo "終了"
        exit
fi
# gitプロジェクトパス
gitPath="/www/wwwroot/$1"
# git URL
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 "終了"
        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 "終了"
        exit
fi

保存後、キーを表示するには、以下のようにクリックします:

宝塔WebHook使用方法:
GET/POST:
http://サーバーip:ポート/hook?access_key=HOOKキー&param=aaa
@param access_key string HOOKキー
@param param string カスタムパラメータ(hookスクリプト内で$1で受け取ります)

== 注意:貼り付ける前に URL の最後の 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 リポジトリを取得するのは頻繁に失敗します。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。