私のセットアップは、cURL が有効で、Git と Hudson がインストールされた Windows XAMPP サーバーです。Hudson は Git を毎分ポーリングして変更を探し、見つかった場合はビルドを作成します。このビルドをテスト サーバーとして使用します。これはうまくいきます。
Hudson の強制ビルド機能を実行する中央リモート リポジトリに post-receive フックを設定したいと考えています。
開発者のローカル ブランチからプッシュされる中央の Git リポジトリのフック ディレクトリに、"post-receive" という post-receive ファイルを作成しました。それぞれが中央リポジトリの独自のブランチにプッシュします。Hudson が Git を毎分ポーリングするのではなく、すべてのプッシュの直後に post-receive ビルドを実行したいと考えています。
リモートサーバーへのシェルを開いてフックフォルダーで「post-receive」を実行すると、実行されます。人々がローカルリポジトリのコピーから中央のリポジトリにプッシュしたときに呼び出されていないだけです。
正しく説明していないかもしれませんが、これが私が Git を理解している方法です。
受信後コードは 2 行です。
#!/bin/sh
curl http://myserver.com:8080/hudson/job/myjobname/build?token=mytoken
繰り返しますが、シェルを開いてこれを実行すると動作しますが、誰かがシェルにプッシュしても何も起こらず、1 分も経たないうちに Hudson が Git が変更されたことに気づき、ビルドします。
必要に応じて明確にさせていただきます。どんな助けでも大歓迎です。
編集:それをいじった後、参照が何かの更新されていないため、受信後が実行されていないように感じますか? gitのドキュメントによると
すべての参照が更新された後、リモート リポジトリで 1 回実行されます。
これは、何も更新しないと実行されないということですか? もしそうなら、とにかく物事が更新されていると確信しているので、それは適用されるべきではありません.
これが私のプロセスです: ローカルで編集を行います。編集をコミットします。HEAD から「mybranch」と呼ばれるリモート ブランチ (チェックアウトされているマスター ブランチではない) にプッシュします。これは、フックを実行するポイントです。