ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用して GIT コードを自動的にデプロイする、php デプロイメント git_PHP チュートリアル
私は最近、Coding のコード ホスティングを使用し、WebHook の自動デプロイを設定しました。その主な理由は、WebHook の権限制御をまだ理解していなかったためです。 Linux ですが、幸いにも理解できました。参考までに、私にとって最も役に立った記事を紹介します。私の英語は苦手なので、とりあえず理解しましょう。それ
元のリンク: http://jondavidjohn.com/git-pull-from-a-php-script-not-so-simple/
新しいコミットがプッシュアップされたときに開発サーバーでプルを開始するために、リポジトリ (BitBucket でホストされている) をセットアップするつもりでした。
これは非常に単純なプロセスのように思えました。BitBucket には受信後フックとして POST リクエストを発行するサービスがあるため、ランダム化されたトークンをチェックしてから を開始するようにしました。これは…git pull
リーリー
私が考慮していない考慮事項がいくつかありましたが、それをここに文書化することで、このようなものをセットアップする際の障害を回避できると幸いです。
(見逃した)考察
git
を実行しようとしているユーザーは Apache ユーザー (この例では www
git pull
is the apache user (www
in our case). This user did not happen to have git
) です。このユーザーはパスにたまたまを持っていませんでした。
。
exec()
family of functions simply fail silently because they only report STDOUT and not STDERR. To get the function to report STDERR you can route it into STDOUT by adding 2->&1
exec()
関数ファミリーは STDERR ではなく STDOUT のみを報告するため、単にサイレントに失敗するため、これを追跡するのに時間がかかりました。関数を STDERR に報告するには、関数を STDOUT にルーティングします。コマンドの最後に 2->&1
を追加します。
which git
, which is /full/path/to/bin/git
これに気付いた後、ログインして、 that git
で git バイナリのフルパスを見つけました。これは、 /full/path/to/bin/git
です。
権限
リーリーApache ユーザーには、リポジトリ全体への読み取りおよび書き込みアクセスも必要です。
リーリー「ホストキーの検証に失敗しました」
known_hosts
次に、Apache ユーザーで最初の git pull を実行して、リモートが Apache ユーザーの ファイルに追加されていることを確認する必要があります
Apache ユーザーがこのコマンドを実行することで生じるもう 1 つの考慮事項は、リモート リポジトリとの通信に使用される ssh キーです。
まず、GIT_SSH
environment variable to set the ssh -i
GIT_SSH
環境変数を使用して、 ssh -i
オプションを設定して、特定の ssh キーを使用するように指示します。私は ssh ユーザーを使用して生成しましたが、これは機能しませんでした。おそらく、ssh が特定のキーの安全性を判断するために使用するルールが多数あるためです。キーを使用しようとしているユーザーに関する特定の権限が必要です。 .
私が発見したより簡単な方法は、Apache ユーザーにホーム ディレクトリ (/etc/passwd
) and a .ssh
directory and then run the ssh-keygen
command as the apache user (www
/etc/passwd
経由) と .ssh
ディレクトリを与えてから、 ssh-keygen コマンド as Apache ユーザー (www
)