1

SVN コミットが新しいビルドをトリガーするように、Hudson 継続的インテグレーション サーバーをセットアップしようとしています。SVN サーバーの構成に関しては、stackoverflow で多くの質問と回答を見てきましたが、Hudson の構成に関してはあまり多くありません。

コミット時に Hudson に接続するポストコミット フックを SVN サーバーに追加しました。ここで説明されているように、コミット後のフックを使用しています: http://wiki.hudson-ci.org/display/HUDSON/Subversion+Plugin

ただし、SVN コミット後にビルドはトリガーされません。上記の post-commit フック スクリプトから UUID 値を取得し、独自の HTTP POST 要求を Hudson サーバーに送信しました。

http://<server>/hudson/subversion/<uuid>/notifyCommit?rev=<rev>

その後、Hudson ログには次のように表示されます。

WARNING: No subversion jobs using SCM polling

したがって、私の HTTP POST 要求は Hudson に到達していますが、Hudson は、この通知で何かを行うように構成されたジョブがないと不平を言っています。

上記のリンクによると、(a) SCM ポーリングを設定し (任意のスケジュールで十分です)、(b) 匿名の読み取りアクセスを許可し、(c) クロスサイト エクスプロイト チェックを無効にする必要があります。

そのため、夜間ビルドに SCM ポーリングを使用するように Hudson ジョブの 1 つを構成し、クロスサイト エクスプロイト チェックが無効になっていることを確認しました。また、「セキュリティを有効にする」オプションを無効にしています。これは、匿名の読み取りアクセスが許可されていることを意味します (と思います)。

次に、SVN コミット通知を表す HTTP POST リクエストを再度送信しました。今回は、システム ログにメッセージはありません。これは、SCM ポーリングのないジョブの警告がないことを意味します。しかし、まだビルドはありません。

Hudson は HTTP POST 要求を介してビルド トリガーを認識でき、ビルド トリガーを受け入れることができる SCM ポーリングのジョブがあることを認識しているようですが、ビルドのトリガーに失敗します。

これを修正するために何をする必要があるのか​​ 疑問に思っています。セキュリティを有効にして、匿名の読み取りアクセスを明示的に許可する必要がありますか? または、「誰でも何でもできる」認証オプションを有効にしますか? SCM ポーリングを何らかの方法で変更する必要がありますか (現在は「0 2 * * *」に設定されています)。

どんな助けでも感謝します。

編集: Tomcat 内で Hudson を実行しています。Tomcat は Windows XP のサービスとして開始されます。

4

1 に答える 1

1

v3.0.0 より前 (v2.2.1 以前) では、Hudson のポーリング機能には次の 2 つの意味があります。

1) ポーリングを選択してスケジュールを設定すると、そのジョブが実行され、指定された時間に変更が検出されます。このジョブは、ポーリングをまったく行わないビルド ジョブと同様に、SCM からのコミット後のフックをすべて無視します。

2) ポーリングを有効にしますが、実際のポーリング フィールドは空白のままにします。これにより、Hudson は「受動的に」ポーリングできます。つまり、コミット後のトリガーが Hudson に来るまで待機し、その時点でのみビルド ジョブが実行されます。

あなたが行ったようにポーリングを有効にすることをお勧めしますが、スケジュールは削除してください。これで問題が解決したかどうかをコミュニティに知らせてください。

于 2013-04-01T17:41:50.013 に答える