2011-01-12 16 views
0

CruiseControlで楽しく遊べます。CruiseControl:変更が検出されましたが、ワーキングコピーのタイムスタンプは変更されていません

私はWindows XPマシンでCruiseControlのローカルインストールにJavaプロジェクトを組み込んだ。

私のconfig.xmlファイルは毎分実行され、自分のantスクリプトからプロジェクトをビルドします。

ダッシュボードの[Modifications]タブでトランクの変更を検出したにもかかわらず、作業コピーで影響を受けるファイルの日付とタイムスタンプを見ると、これらは変更されていません。

私のbuild.xmlが実行されるのはこのローカルコピーです。私のconfig.xmlはCruiseControlが変更を検出するように正しく設定されていますが、私のAntスクリプトは作業コピーに対して実行されていませんトランクと同期します。

私の設定ファイルは、そこに誰かが明白な何かを狙ってくれるのではないでしょうか?

コンフィグのxml:

<?xml version="1.0"?> 
<cruisecontrol> 

    <dashboard url="http://localhost:8080/dashboard" postinterval="1" /> 

    <project name="myProject" requireModification="false"> 
     <listeners> 
       <currentbuildstatuslistener file="logs/myProject/status.txt"/> 
      </listeners> 

      <bootstrappers> 
      <svnbootstrapper file="build.xml" 
      username="cruise_control" password="password" 
       localWorkingCopy="projects\myProject" /> 
     </bootstrappers> 

     <modificationset> 
      <svn repositoryLocation="https://path/to/myTrunk" 
       localWorkingCopy="projects/myProject" 
       username="cruise_control" password="password"> 
       </svn> 
      </modificationset> 

      <schedule interval="60" > 
      <ant buildfile="build.xml" anthome="C:\Program Files\apache-ant-1.8.2" antWorkingDir="projects/myProject/" /> 
      </schedule> 

     <log> 
       <merge dir="C:\Program Files\CruiseControl\projects\myProject\reports\junit" pattern="TEST*.xml" /> 
     </log> 

     <publishers> 
      <artifactspublisher dir="C:\Program Files\CruiseControl\projects\myProject\dist" 
       dest="C:\Program Files\CruiseControl\artifacts\myProject" 
       moveInsteadOfCopy="true" /> 
     </publishers> 
    </project> 
</cruisecontrol> 

ダッシュボードの設定ファイル:事前に

<dashboard> 
    <buildloop 
     logsdir="C:/Program Files/CruiseControl/logs/" 
     artifactsdir="C:/Program Files/CruiseControl/artifacts/" /> 
    <features allowforcebuild="true" /> 
    <trackingtool projectname="" baseurl="" keywords=""/> 
    <subtabs> 
     <subtab class="net.sourceforge.cruisecontrol.dashboard.widgets.ErrorsAndWarningsMessagesWidget" /> 
    </subtabs> 
</dashboard> 

感謝。

答えて

0

IIRC Cruisecontrolはリポジトリの変更を検出しますが、作業コピーは自動的に更新されません。したがって、ビルドスクリプトに作業コピーをリポジトリ内の変更で更新するコード(つまり、svn updateを実行するコード)がビルドスクリプトに含まれていない可能性があります。

+0

あなたは正しいラグラムです。 SVNBootStrapperはSVNの更新を担当します。私はこのタスクを正しく構成していませんでした。 – Ben

0

問題が見つかりました。

<svnbootstrapper file="build.xml" 
      username="cruise_control" password="password" 
       localWorkingCopy="projects\myProject" /> 

「ファイル」プロパティで、svnbootsraperだけ与えられたファイルを監視します。

私のブートストラップは、以下の通りでした。このプロパティが削除され

、ブートストラップは、全体の作業コピーを監視します。

<svnbootstrapper username="cruise_control" password="password" 
       localWorkingCopy="projects\myProject" /> 

1がmodificationset属性はSVNの更新を実行することを前提とするのはよくある間違いであるように思われます。実際には、リビジョン番号の増分だけをリッスンします。 SVNを更新するsvnbootstrapperです。

これが誰かを助けることを願っています!

+0

実際には、svnbootstrapper(http://cruisecontrol.sourceforge.net/main/configxml.html#svnbootstrapper)は、1つのファイル(通常はbuild.xml)を更新するためのもので、svn更新タスクを実行する必要があります。あなたが提案したことはうまくいくかもしれませんが、おそらく正しいとは限りません。 – Raghuram

+0

「正しい」方法は、antスクリプトが実際のsvn updateコマンドを実行させることです。また、modificationsetは、すでにrepositoryLocationを持っているのでlocalWorkingCopyを無視し、両方を使うことはサポートされていないことにも注意してください。 – MatsT

2

私は上記で指摘したBenと同じように設定しました。しかし、私は2つの問題に直面した。

  1. SVNBootsTrapperはローカルの作業コピーを最初から持っていないと、自分のローカル作業ディレクトリを更新しません。私は、コマンドラインから、またはantスクリプトを介して明示的な "svn checkout"を行うか、手動でコードをこのローカル作業ディレクトリに移動します。その後、 "SVN Boots Trapper"は自分のローカル作業ディレクトリ/コピーをリポジトリの変更で更新できます。 SVNBootsトラッパーがどのように動作するのか、これは最初のリポジトリでローカル作業コピーの人口にとって取っておかなければならないアプローチですか?

2.Iは

<bootstrappers> 
    <svnbootstrapper file="build.xml" localWorkingCopy="projects\myProject" /> 
</bootstrappers> 

なしのuid/pwdのフィールドを持っていました。 2.8.4以前のバージョンの私の古いCruisecontrolではうまくいくはずです。しかし、ここでそれが失敗し、私に尋ねる:

ProjectController - 'MyProjectと' コントローラ:progressイベントを構築: SVNBootstrapperブートストラップ - のsvn:パスワード

を取得し、それが失敗することはできませんが。このパスワードの問題を回避する唯一の方法は、

です。属性のユーザー名とパスワードを追加してください(上記のようにBenさん)。

b。 cmd行svn updateコマンドを実行し、プロンプトが表示されたらuid/pwdを指定します。そして、あなたのパスワードを「暗号化されていない」と保存するためにyesと答えます。 2つ目の問題に両方のアプローチ(a)と(b)を使用する方法はありますか?

関連する問題