在我目前的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,Build 19260 - 32 Bit,2010/04/16 20:20:11
CruiseControl:2.8.3
答案 0 :(得分:2)
也许你需要一个本地检出版本的存储库,以便CruiseControl可以比较,所以它可以检测到变化?
我们在CruiseControl设置中执行此操作的方式:
我们有一个初始结帐例程,可以检查构建所需的所有项目。我们使用脚本/批处理文件来执行此操作,该文件直接从命令行对svn进行操作。
然后我们在CruiseControl设置文件中使用以下内容:
<modificationset quietperiod="60">
<svn username="${svn.user}"
password="${svn.password}"
localWorkingCopy="${dir.checkout}/db4oj" />
</modificationset>
对于我们签出的每个项目,我们在修改集中都有一个像上面这样的svn条目。
dir.checkout属性将指向文件系统中的具体路径。
答案 1 :(得分:1)
我没有完整的答案,但这是你可以尝试的:
编辑:
添加简单的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/
[...]
答案 2 :(得分:1)
为了给你另一个数据点,我尝试使用我的(相当旧的)CruiseControl设置,并且它有效。
我使用的是svn:// url,因此我更改为http url以匹配您的测试,重新启动巡航控件。等了一会儿(我分心了一个小时)然后在svn中提交了我的一个文件的更改。不久之后,由svn中的修改触发了新的构建。
编辑:为了澄清,我的巡航控制系统正在监视svn,例如svn://buildserver/svnrepo/project
。您的OP使用http URL提及。为了更接近您的测试场景,我还想使用http网址。我通过apache映射了svn,所以我只是将我正在使用的URL更改为apache呈现svn repo的地方,例如http://devserver/svn/svnrepo/project
更接近您的测试场景。
我的观点是要表明你想要做的事情确实有效。
这是我的CruiseControl config.xml
文件中的一个已清理的片段。我正在使用maven(1.1beta3!)来构建。 Crikey,这个东西很旧,但它正在工作。
<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>