3

我正在尝试使用CruiseControl 2.7.3(原版)来构建一个位于 SVN 存储库中的 Java 项目。

我的巡航配置使用svn 插件作为修改集。当检测到修改时,将使用 Ant 计划构建。然后,该 Ant 构建文件使用 svnant Ant Task 对项目进行完整的检查。有一段时间,我们将此设置为仅签出“HEAD”,但我们遇到过构建不会触发一两次签入的情况,因为签入发生在修改集检查之后,但在 ant 调用之前svn结账。因此,我们试图更改 ant 构建文件以使用修改检查检索到的修订号。

CruiseControl 配置参考页面声称设置了一个属性svnrevision并将其传递给构建器,就像 label 属性是由labelincrementers 设置的一样。当我按下强制建立按钮 时,它似乎没有设置。

我需要做些什么来完成这件事吗?

4

3 回答 3

1

查看 SVN 源代码控制的代码,似乎 svnrevision 应该传递给构建器,从而传递给您的 Ant 调用。您是否尝试过使用 Ant 脚本中的属性?

针对评论中的问题:

那是因为在强制构建的情况下没有修改,所以没有修改修订号。在这种情况下,svnlabelincrementer 将传递您在本地拥有的最新版本号,这也是最新的。

于 2009-03-04T16:01:19.473 回答
0

Cruisecontrol ant 调用与这样构造的 (svn)label 无关。svn 标签用于注释构建名称,而 build.log 实际上只是 ant 的输出,因为它通过 Cruisecontrol 传递。

如果您想将修订号写入 ant 构建输出,基本上有两种方法:

一种方法是让 ant 以某种方式与 svn 交互。ant 中的 Svn 只能通过 tigris 的contrib ant 任务获得,因此将其放入您的 ant 文件中并非易事。但是在你的构建中,你可以做一个svn info并获取修订号作为你可以使用的 ant 属性。

另一种方法是使用 svnlabelincrementer 将修订号分配给标签,并使用从Cruisecontrol传递到构建脚本的构建属性将其传递给 ant 脚本。正如 Jay 在评论中提到的,标签仅包含最后一次成功的构建修订,这不是他想要的。在这个博客上已经提出了一个修复,但是在 ant 构建文件中进行工作似乎更合适。

于 2009-03-02T21:20:58.007 回答
0

你可以使用安静期设置吗?提交后,CruiseControl 可以等待一段时间(比如 30 秒),然后再开始构建。

它不会为每个提交触发单独的构建。相反,大约在同一时间提交将启动单个构建。

于 2009-03-03T14:17:50.700 回答