0

使用 CruiseControl 享受乐趣和游戏。

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

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

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

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

提前致谢。

4

3 回答 3

2

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

  1. 如果我“第一次”没有本地工作副本,SVNBootsTrapper 不会更新我的本地工作目录。我必须从命令行或通过 ant 脚本执行明确的“svn checkout”,或者手动将代码移动到这个本地工作目录中。之后,“SVN Boots Trapper”可以使用存储库更改更新我的本地工作目录/副本。这是 SVNBoots trapper 的工作方式,还是我们首次将存储库用于本地工作副本群体的方法?

2.我只有

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

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

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

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

一个。添加属性用户名和密码(如本上面的)或

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

于 2011-09-21T16:04:29.940 回答
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 更新似乎是一个常见错误。事实上,它只监听修订号的增量。是执行 SVN 更新的 svnbootstrapper。

希望这对某人有帮助!

于 2011-01-13T16:02:08.433 回答
0

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

于 2011-01-13T09:37:49.680 回答