ホームページ > PHPフレームワーク > ThinkPHP > Webフックサーバーがコードを自動的にプルすることについてphp thinkphp6

Webフックサーバーがコードを自動的にプルすることについてphp thinkphp6

藏色散人
リリース: 2021-06-26 09:05:11
転載
2331 人が閲覧しました
#Github の準備

1. ウェアハウス設定に Webhook を追加します

プライベート ウェアハウスを例に挙げます:


Webフックサーバーがコードを自動的にプルすることについてphp thinkphp6

# 1. ウェアハウスを作成した後、「設定」をクリックします。

Webhook アクセス パスの設定:


Webフックサーバーがコードを自動的にプルすることについてphp thinkphp6

私自身のプロジェクトを例に挙げると、フレームワークは tp6 を使用します。 public/ の下に、basic.php という名前のファイルを作成します。これは、コードがサーバーにプッシュされるときに GitHub がアクセスして実行できるファイルです。
このファイルはシェルコマンドを実行するために使用され、リンクがトリガーされるとファイル内のコマンドが自動的に実行され、自動 git pull が実現されます。
2. リンクが有効かどうか、ファイルがアクセスされたかどうかをテストします

Webフックサーバーがコードを自動的にプルすることについてphp thinkphp6

上の図に示すように、緑色の ✅ が表示されている場合は、それを意味します。リンクにアクセス済みであることを示し、赤い⚠️マークが表示されている場合は、ファイルがアクセスされていないことを意味します。リンクに問題があるのか​​、コードに問題があるのか​​を確認するために使用します。
  • [x] Github が完成しました。

    PHP コードのデプロイメント

    1. フック ファイルを追加し、シェル コマンドを実行します

    いくつかの

    インライン コード部分を以下に示します。

<?php     //git webhook 自动部署脚本
    $requestBody = file_get_contents("php://input");    //接收数据
    if (empty($requestBody)) {              //判断数据是不是空
        die(&#39;send fail&#39;);
    }
    $content = json_decode($requestBody, true);     //数据转换
    //若是主分支且提交数大于0
    if ($content[&#39;ref&#39;]==&#39;refs/heads/main&#39;) {
     //或将命令加入 shell里,看个人需求 git reset --hard origin/master && git clean -f
        $res = shell_exec(&#39;cd /www/wwwroot/xxxx/ && echo `sudo git pull` >> b.log');//PHP函数执行git命令
        $res_log = '-------------------------'.PHP_EOL;
        $res_log .= ' 在' . date('Y-m-d H:i:s') . '向' . $content['repository']['name'] . '项目的' . $content['ref'] . '分支push'.$res;
        file_put_contents("git-webhook.txt", $res_log, FILE_APPEND);//将每次拉取信息追加写入到日志里
    }
?>
ログイン後にコピー
  • [x] この時点で、コマンドの php シェル部分が完成し、さまざまなプロジェクト要件に従ってデバッグできるようになります。

    一般的なエラー処理

    1. シェルは .php.ini ファイルで無効になっていません。このエラーは比較的一般的で、デバッグ中に簡単に見つかるため、ここでは説明しません。詳細。

    処理方法 php.iniのshell_execを削除し、サービスを再起動します。
    2. .git 権限の問題。.git/ ディレクトリのファイル権限グループを www

    に変更しても、通常は発生しません。権限エラーが発生した場合は、最初に次のことを確認することをお勧めします。ファイル ディレクトリは設定したアクセス許可グループです。そうでない場合は、次のコマンドを使用してファイル アクセス許可グループ
    //以www用户组为例
    chown -R www:www file/
    ログイン後にコピー
    3 を変更できます。アクセス許可グループの問題

    段階的に確認してください。前の処理は問題ないのですが、コードが自動でプルされない場合は、上記のシェルを手動で実行し、コードが正常にプルされれば、シェルの問題は解消されます。ログ レコードをオンにします。ログ レコードの内容が空の場合は、古いバージョンを新しいバージョン
    4 に置き換えることができます。ホスト キーの検証に失敗したのと同様のエラーが発生しました。^M 致命的: 可能性があります。 not read from Remote と表示されます rep....

    パーミッションキーに問題があるためです Github に接続するための公開キーが www パーミッショングループに作成されていません
    作者大きなボスがいる場合、他の解決策がある場合は、プライベートメッセージまたはコメントエリアにメッセージを残してください。

    vim /etc/sudoers を開き、root の下に www の行を追加して、パスワードなしで sudo 権限を実行します
    Webフックサーバーがコードを自動的にプルすることについてphp thinkphp6
    #5. 完了し、Webhook が完成しました。ファイルを変更して送信し、ログをクエリします。

    Webフックサーバーがコードを自動的にプルすることについてphp thinkphp6

    ローカル環境 centos php7.3 nginx

以上がWebフックサーバーがコードを自動的にプルすることについてphp thinkphp6の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート