CruiseControl:已检测到已更改,但工作副本中的时间戳未更改

时间:2011-01-12 18:16:36

标签: svn cruisecontrol dashboard build.xml

使用CruiseControl获得乐趣和游戏。

我已经在我的Windows XP机器上安装了一个Java项目到本地安装的CruiseControl。

我的config.xml文件每分钟运行一次,并从我的ant脚本构建我的项目。

尽管在仪表板的“修改”选项卡中检测到Trunk的更改,但当我查看工作副本中受影响文件的日期和时间戳时,我注意到这些更改未更改。

这是我的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>

提前致谢。

3 个答案:

答案 0 :(得分:2)

我配置与Ben指出的相同。但是,我遇到了两个问题。

  1. 如果我没有“第一次”的本地工作副本,SVNBootsTrapper不会更新我的本地工作目录。我要么从命令行或通过ant脚本做一个明确的“svn checkout”,要么手动将代码移动到这个本地工作目录中。之后,“SVN Boots Trapper”可以更新我的本地工作目录/副本。这是SVNBoots捕手如何工作的,或者这是我们第一次将存储库带到本地工作副本的方法吗?
  2. 2.我只有

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

    并且没有uid / pwd字段。在2.8.4版本之前的旧Cruisecontrol中,它可以正常工作。但在这里它失败了并问我:

    ProjectController - 'myProject'控制器:构建进度事件:bootstrapping SVNBootstrapper - svn:无法获取密码

    它失败了。解决此密码问题的唯一方法是:

    一个。添加属性用户名和密码(如Ben上面所示)或

    湾运行cmd line svn update命令,在提示时提供uid / pwd。然后说“是”将密码存储为“未加密”。 有没有办法在我的第二个问题中使用这两种方法(a)和(b)?

答案 1 :(得分:0)

IIRC Cruisecontrol检测到存储库的更改,但不会自动更新工作副本。因此,一种可能性是您的构建脚本没有代码来更新存储库中的更改(即执行svn update)。

答案 2 :(得分:0)

我发现了问题。

我的引导程序如下:

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

使用“file”属性,svnbootsraper仅监视给定文件。

删除此属性后,引导程序将监视整个工作副本:

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

假设modifyset属性执行SVN更新似乎是一个常见的错误。实际上,它只监听修订号的增量。 svnbootstrapper是否执行SVN更新。

希望这有助于某人!