2011-01-12 29 views
0

與CruiseControl開心玩遊戲。CruiseControl:檢測到更改,但工作副本中的時間戳保持不變

我已經裝配了一個Java項目到本地的CruiseControl我的Windows XP機器上安裝。

我的config.xml文件中運行的每一分鐘,並且從我的Ant腳本建立我的項目。

儘管在儀表板檢測我的「修改」選項卡更改樹幹,當我在看的日期和我的工作拷貝受影響的文件的時間戳,我注意到,這是不變的。

這是我的build.xml運行的本地副本,所以我很擔心,儘管我的config.xml配置正確,CruiseControl檢測到更改,但我的Ant腳本沒有針對工作副本運行與Trunk同步。

我後我的配置文件,希望有人在那裏斑點的東西,顯然給他們,而不是我!

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

你是對的Raghuram。 SVNBootStrapper負責SVN更新。我沒有正確配置這個任務。 – Ben 2011-01-13 16:03:01

0

我發現了這個問題。

我的引導程序如下:

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

隨着 「文件」 屬性,svnbootsraper只監視指定的文件。

當此屬性被刪除,引導程序監控整個工作拷貝:

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

這似乎是一個常見的錯誤的一個假設modificationset屬性執行SVN更新。實際上,它只是監聽版本號的增量。執行SVN更新的svnbootstrapper。

希望這可以幫助別人!

+0

其實svnbootstrapper(http://cruisecontrol.sourceforge.net/main/configxml.html#svnbootstrapper)是爲了更新單個文件(通常是build.xml中),這反過來應該運行一個svn更新任務。你提出的建議可能有效,但可能不正確。 – Raghuram 2011-01-14 05:03:04

2

我的配置與上面Ben指出的一樣。但是,我遇到了兩個問題。

  1. 如果我在第一次沒有本地工作副本時,SVNBootsTrapper不會更新我的本地工作目錄。我必須從命令行或通過ant腳本執行顯式的「svn checkout」,或手動將代碼移動到本地工作目錄中。之後,「SVN Boots Trapper」可以通過更改存儲庫來更新我的本地工作目錄/副本。這是SVNBoots捕食者的工作方式嗎?或者這是我們首次將庫存儲到本地工作副本的方法嗎?

2.I只有

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

沒有UID /密碼字段。在2.8.4版之前的CruiseControl中,它可以正常工作。但在這裏它失敗,並問我:

ProjectController - 'myProject的' 控制器:建設進度事件:引導 SVNBootstrapper - SVN:無法獲取密碼

而失敗。解決此密碼問題的唯一方法是:

a。或者添加屬性用戶名和密碼(如上面的Ben所示)或

b。運行cmd line svn update命令,提示時提供uid/pwd。然後說是以存儲您的密碼「未加密」。 有沒有辦法在我的第二個問題上使用兩種方法(a)和(b)?

相關問題