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 条目。

dir.checkout 属性将指向文件系统中的具体路径。

于 2010-05-22T14:10:23.420 回答
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 回答
1

只是为了给你另一个数据点,我用我的(相当旧的)CruiseControl 设置尝试了这个,它起作用了。

  • 巡航控制 v2.5
  • 颠覆服务器 v1.5.5 (r34862)
  • 阿帕奇 2.0

我使用的是 svn:// url,所以我更改为 http url 以匹配您的测试,重新启动巡航控制。等了一会儿(我分心了一个小时)然后对我在 svn 中的一个文件进行了更改。不久之后,一个新的构建开始了,由 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 回答