このファイルはシェルコマンドを実行するために使用され、リンクがトリガーされるとファイル内のコマンドが自動的に実行され、自動 git pull が実現されます。2. リンクが有効かどうか、ファイルがアクセスされたかどうかをテストします 上の図に示すように、緑色の ✅ が表示されている場合は、それを意味します。リンクにアクセス済みであることを示し、赤い⚠️マークが表示されている場合は、ファイルがアクセスされていないことを意味します。リンクに問題があるのか、コードに問題があるのかを確認するために使用します。
- [x] Github が完成しました。 PHP コードのデプロイメント1. フック ファイルを追加し、シェル コマンドを実行しますいくつかの
インライン コード部分
を以下に示します。
<?php //git webhook 自动部署脚本 $requestBody = file_get_contents("php://input"); //接收数据 if (empty($requestBody)) { //判断数据是不是空 die('send fail'); } $content = json_decode($requestBody, true); //数据转换 //若是主分支且提交数大于0 if ($content['ref']=='refs/heads/main') { //或将命令加入 shell里,看个人需求 git reset --hard origin/master && git clean -f $res = shell_exec('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 に変更しても、通常は発生しません。権限エラーが発生した場合は、最初に次のことを確認することをお勧めします。ファイル ディレクトリは設定したアクセス許可グループです。そうでない場合は、次のコマンドを使用してファイル アクセス許可グループ
3 を変更できます。アクセス許可グループの問題 段階的に確認してください。前の処理は問題ないのですが、コードが自動でプルされない場合は、上記のシェルを手動で実行し、コードが正常にプルされれば、シェルの問題は解消されます。ログ レコードをオンにします。ログ レコードの内容が空の場合は、古いバージョンを新しいバージョン 4 に置き換えることができます。ホスト キーの検証に失敗したのと同様のエラーが発生しました。^M 致命的: 可能性があります。 not read from Remote と表示されます rep....パーミッションキーに問題があるためです Github に接続するための公開キーが www パーミッショングループに作成されていません//以www用户组为例 chown -R www:www file/
ログイン後にコピー作者大きなボスがいる場合、他の解決策がある場合は、プライベートメッセージまたはコメントエリアにメッセージを残してください。
#5. 完了し、Webhook が完成しました。ファイルを変更して送信し、ログをクエリします。
vim /etc/sudoers を開き、root の下に www の行を追加して、パスワードなしで sudo 権限を実行します
ローカル環境 centos php7.3 nginx