11

CruiseControl.NET中,我设置了两个项目,一个用于构建,一个用于部署构建包。

我们的构建主要基于MSBuild,当它运行仪表板时,仪表板会不断更新构建的最新输出。这意味着即使完整构建可能需要 15 分钟,您也可以准确地看到它在哪里,并且它正在取得进展。

部署是使用另一个工具运行的(VisualBuild,尽管我看到与 PowerShell 等其他工具相同的基本行为)。这是另一个长期运行的任务,但在这种情况下,仪表板不会随着其进展而更新其输出。由于部署可能需要很长时间,因此很难判断事情是否在进展或事情是否已经停滞。输出将记录到 CruiseControl.NET 日志中,一旦完成,就会显示在仪表板上,但在部署过程中不会显示。

有没有办法以类似实时的方式从仪表板上更新的其他任意长时间运行的任务中获取输出?MSBuild 在这方面有何特别之处?

4

1 回答 1

3

CruiseControl.Net,从 1.4 版开始,包括对构建侦听器文件的支持:它是一种允许通过读取日志文件来跟踪长时间运行任务的执行的机制。虽然这种机制是通用的,并且可以与任何工具一起使用,但 CruiseControl.Net 本身仅附带MSBuildNAnt的构建侦听器(这意味着这两个工具的进度会自动报告,无需额外配置)。

对于由任务调用的外部工具,例如 VisualBuild,<exec>您必须插入您自己的记录器来创建一个简单的进度文件:

<data>
  <Item Time="2007-10-14 08:43:12" Data="Starting Build timetester" />
  <Item Time="2007-10-14 08:43:16" Data="Starting Target build" />
  <Item Time="2007-10-14 08:43:16" Data="Sleeping for 5000 milliseconds." />
</data>

CCNetListenerFile在环境变量指向的位置。

于 2011-08-18T09:28:51.483 回答