2

現在の CruiseControl セットアップでは、次のターゲットを実行しています。

<modificationset quietperiod="30">
       <svn RepositoryLocation="http://my/url/repo/trunk" />
</modificationset>

空白のテキスト ファイルを簡単にチェックインすると、CruiseControl ログに次のようなメッセージが表示されます。

[cc]May-13 15:53:56 Project       - Project mine:  bootstrapping
[cc]May-13 15:53:56 jectController- mine Controller: build progress event: bootstrapping
[cc]May-13 15:53:56 Project       - Project mine:  checking for modifications
[cc]May-13 15:53:56 jectController- mine Controller: build progress event: checking for modifications
[cc]May-13 15:53:59 Project       - Project mine:  No modifications found, build not necessary.
[cc]May-13 15:53:59 Project       - Project mine:  idle
[cc]May-13 15:53:59 jectController- connectfour Controller: build progress event: idle
[cc]May-13 15:53:59 Project       - Project mine:  next build in 1 minutes
[cc]May-13 15:53:59 Project       - Project mine:  waiting for next time to build
[cc]May-13 15:53:59 jectController- mine Controller: build progress event: waiting for next time to build

カメ: TortoiseSVN 1.6.8、ビルド 19260 - 32 ビット、2010/04/16 20:20:11
CruiseControl: 2.8.3

4

3 に答える 3

2

CruiseControl が変更を検出できるように、ローカルでチェックアウトされたバージョンのリポジトリが必要な場合があります。

CruiseControl セットアップでこれを行う方法は次のとおりです。

ビルドに必要なすべてのプロジェクトをチェックアウトする初期チェックアウト ルーチンがあります。これを行うには、スクリプト/バッチ ファイルを使用します。これは、コマンド ラインから svn に対して直接動作します。

次に、CruiseControl セットアップ ファイルで以下を使用します。

<modificationset quietperiod="60">        
  <svn username="${svn.user}" 
       password="${svn.password}" 
       localWorkingCopy="${dir.checkout}/db4oj" />
</modificationset>

チェックアウトするすべてのプロジェクトについて、モディフィケーションセットに上記のような svn エントリが 1 つあります。

dir.checkout プロパティは、ファイル システム内の具体的なパスを指します。

于 2010-05-22T14:10:23.420 に答える
1

別のデータポイントを提供するために、(かなり古い) CruiseControl セットアップでこれを試してみましたが、うまくいきました。

  • クルーズコントロール v2.5
  • Subversion サーバー v1.5.5 (r34862)
  • アパッチ 2.0

svn:// url を使用していたので、テストに合わせて http url に変更し、クルーズ コントロールを再起動しました。しばらく待ってから (1 時間気が散ってしまいました)、svn のファイルの 1 つに変更をコミットしました。その直後、svn の変更をトリガーとして新しいビルドが開始されました。

編集: 明確にするために、私のクルーズ コントロールは svn のようなものを監視していましたsvn://buildserver/svnrepo/project。あなたのOPは、http URLを使用して言及しています。テスト シナリオに近づくために、http URL も使用したいと思いました。私はApacheを介してsvnをマップしていたので、使用していたURLをApacheがsvnリポジトリを提示していた場所に変更しました。たとえばhttp://devserver/svn/svnrepo/project、テストシナリオに近づけるためです。

私のポイントは、あなたがやろうとしていることがうまくいくことを示すことです.

config.xml以下は、CruiseControlファイルからサニペット化されたスニペットです。私はビルドにmaven(1.1beta3!)を使用しています。クリキー、これは古いものですが、機能しています。

<project buildafterfailed="false" name="someproject-int">
        <plugin name="svn" classname="net.sourceforge.cruisecontrol.sourcecontrols.SVN">
        </plugin>
        <plugin name="svnbootstrapper" classname="net.sourceforge.cruisecontrol.bootstrappers.SVNBootstrapper">
        </plugin>    
    <labelincrementer separator="_" defaultLabel="rev_1"/>
    <bootstrappers>
      <currentbuildstatusbootstrapper file="p:/build/cc-logs/someproject-int/status.txt">
      </currentbuildstatusbootstrapper>
    </bootstrappers>
    <modificationset>
      <svn repositoryLocation="http://dev/svn/project/trunk" 
      localWorkingCopy="p:/build/checkout/int/project"
      username="build" password="****">
      </svn>      
    </modificationset>
    <schedule interval="300">
      <maven goal="scm:svn-update-project|compile" 
        projectfile="p:/build/checkout/int/project/project.xml" 
        mavenscript="d:/Programs/build/Maven-1.1b3/bin/maven.bat">
      </maven>
    </schedule>
    <log dir="p:/build/cc-logs/project" encoding="ISO-8859-1">
    </log>
    <publishers>
    [...]
    </publishers>
  </project>
于 2010-05-20T20:22:13.167 に答える
1

完全な答えはありませんが、これはあなたが試すことができるものです:

  1. CruiseControl からのデバッグ出力を有効にすると、CruiseControl エンジンによって発行された実際のコマンドが出力されます。
  2. その後、コマンドを手動で再実行し、その出力を確認できます。

編集:

単純な log4j 構成の追加:

log4j.logger.net.sourceforge.cruisecontrol.sourcecontrols=DEBUG

CruiseControl ログに追加されるメッセージはそれほど多くありません。svnそれでも、どのコマンドが実行されるかを知るには十分です。私のログで私が見た:

2010-05-17 20:57:16,808 [BuildQueueThread] INFO  BuildQueue    - now adding to the thread queue: test1
2010-05-17 20:57:16,821 [Thread-22] INFO  Project       - Project test1:  bootstrapping
2010-05-17 20:57:16,821 [Thread-22] INFO  jectController- test1 Controller: build progress event: bootstrapping
2010-05-17 20:57:16,821 [Thread-22] INFO  Project       - Project test1:  checking for modifications
2010-05-17 20:57:16,821 [Thread-22] INFO  jectController- test1 Controller: build progress event: checking for modifications
2010-05-17 20:57:16,828 [Thread-22] DEBUG SVN           - Executing command: svn log --non-interactive --xml -v -r {2010-05-16T22:00:00Z}:{2010-05-17T18:57:16Z} http://localhost/svn/SomeProject/

ここで、同じコマンドを手動で発行すると、「空の」XML が得られます。

$  svn log --non-interactive --xml -v -r {2010-05-16T22:00:00Z}:{2010-05-17T18:57:16Z} http://localhost/svn/SomeProject/
<?xml version="1.0"?>
<log>
</log>

...より広い時間範囲とは対照的に、例えば:

$  svn log --non-interactive --xml -v -r {2001-01-01T01:00:00Z}:{2010-05-17T18:57:16Z} http://localhost/svn/SomeProject/
[...]
于 2010-05-13T20:05:22.117 に答える