3

CruiseControl 2.7.3 (オリジナル) を使用して、SVN リポジトリにある Java プロジェクトを構築 しようとしています。

私のクルーズ構成は、修正セットにsvn プラグインを使用しています。変更が検出されると、Ant を使用してビルドがスケジュールされます。その Ant ビルド ファイルは、svnant Ant タスクを使用して、プロジェクトの完全なチェックアウトを行います。しばらくの間、これを「HEAD」をチェックアウトするように設定していましたが、変更セットのチェックの後、ant 呼び出しの前にチェックインが行われたため、ビルドが 1 つか 2 つのチェックインで起動しない場合がありました。 svn チェックアウト。その結果、変更チェックで取得したリビジョン番号を使用するように ant ビルド ファイルを変更しようとしています。

CruiseControl 構成リファレンス ページでは、プロパティsvnrevisionが設定され、ビルダーに渡されると主張しています強制ビルドボタン を押しても設定されていないようです。

これを行うために何かする必要がありますか?

4

3 に答える 3

1

SVNソース管理のコードを見ると、svnrevisionはビルダーに渡され、したがってAnt呼び出しに渡される必要があるようです。Antスクリプトのプロパティを使用してみましたか?

コメントの質問に答えて:

これは、フォースビルドの場合、変更がなかったため、変更リビジョン番号がないためです。その場合、svnlabelincrementerは、ローカルにあるものの最新のリビジョン番号を渡します。これも最新のものになります。

于 2009-03-04T16:01:19.473 に答える
0

quietperiod 設定を使用できますか? コミット後、CruiseControl はビルドを開始する前に、ある程度の時間 (たとえば 30 秒) 待機できます。

コミットごとに個々のビルドが起動されることはありません。むしろ、ほぼ同時にコミットすると、単一のビルドが開始されます。

于 2009-03-03T14:17:50.700 に答える
0

CruiseControl ant の呼び出しは、そのように構築された (svn) ラベルとは何の関係もありません。svn ラベルはビルド名に注釈を付けるために使用されますが、build.log は実際には、cruisecontrol を介して渡される ant からの出力にすぎません。

リビジョン番号を ant ビルドの出力に書き込みたい場合は、基本的に 2 つの方法があります。

1 つの方法は、何らかの方法で ant を svn と対話させることです。ant の svn は tigris のcontrib ant タスクを介してのみ利用できるため、ant ファイルに入れるのは簡単ではありません。しかし、ビルドでこれを使用すると、svn infoを実行してリビジョン番号を ant プロパティとして自由に取得できます。

もう 1 つの方法は、svnlabelincrementer を使用してリビジョン番号をラベルに割り当て、cruisecontrol からビルド スクリプトに渡される buildproperties を使用してそれを ant スクリプトに渡すことです。Jay がコメントで述べたように、ラベルには最後に成功したビルド リビジョンのみが含まれており、これは彼が望んでいるものではありません。このブログで修正が提案されていますが、ant ビルド ファイルで作業を行う方が適しているようです。

于 2009-03-02T21:20:58.007 に答える