Cruise Control .NET在失败状态下的构建所花费的时间

7

我的团队的目标是将构建破坏的时间最小化。

我们使用CruiseControl.NET进行持续集成。我想了解最佳方法来回答以下问题:

"在过去的{timespan}中,{project-name}在破坏状态下花费了多少时间?"

例如: "在过去的1个月中,我们的项目在破坏状态下花费了多少时间?"

CruiseControl.NET是否有任何高级功能可以使此信息在某种类型的报告或仪表板中可用?

或者,您如何解析xml工件文件以获取此信息?


我的团队的目标是尽可能减少我们的构建处于破碎状态的时间。这条信息可以在软件开发中使用。如果我们的构建持续了10小时或3天,那么这将给我们带来严重的延迟和生产力损失。因此,确保构建保持可靠和稳定非常重要。 - Restuta
Restuta:对于我们的团队来说,一个破损的构建代表着一个错误。我们在系统的各个层面上拥有一套自动化测试。当这些测试之一由于代码更改而失败时,这意味着我们添加了一个错误。错误是不可容忍的,我们希望强制将其修复作为高优先级。拥有统计数据只是量化我们在快速处理和修复错误方面的绩效的手段。此外,我们使用CruiseControl.NET部署我们的开发站点,因此只要构建被破坏,新的代码更改就不会反映在我们的开发站点上。我们希望保持我们的开发站点最新。 - bhazzard
破损的构建计数在我看来比停留在这种状态的时间更好的度量标准。 - skolima
1
点赞。我认为这是一个有效且有趣的问题。这些指标很有趣,特别是轻松地参与其中(即人们想要改进这个指标,因为他们是完美主义者和轻松的竞争对手,而不是因为他们的人力资源经理是白痴,他们的奖金会受影响)。此外,使用Cruise Control API(或者爬取或者无论答案是什么)也会很有趣。 - Andrew M
1
我认为,构建失败次数是一个很好的指标,但它与处于失败状态的时间有不同的含义。构建失败次数告诉我们我们引入缺陷的频率。处于构建失败状态的时间告诉我们我们对这些缺陷做出反应的速度。 - bhazzard
5个回答

2
我至少看到两种方法可以解决这个问题:
  1. 您可以编写一个外部工具来解析CC.NET的XML日志文件,计算统计信息并编写HTML报告。这可能比较容易完成,但它不会直接与CC.NET集成。
  2. 您可以编写一个CC.NET插件来完成此任务。在这种情况下,您需要进行一些调查研究。我猜测起点是查看一些现有插件的源代码。

以下是关于CCNET插件的一些链接:


2

1

浏览了一下CC文档,我想如果你要编写自己的Cruise Control仪表板,你可以使用构建结果的RSS源,解析所有日期时间和成功/失败状态,然后将总数汇总到你的阈值。

至于在仪表板中显示它,我认为Cruise Control有一个插件架构,可能会有所帮助http://cruisecontrol.sourceforge.net/main/plugins.html


我特别指的是CruiseControl.NET。您知道CruiseControl的任何文档是否也适用于CruiseControl.NET吗? - bhazzard

0

所以我的最终解决方案并不理想,但它很容易实现并且有效:

我让CC.NET将构建邮件发送到一个电子邮件地址(我们称之为build_emails@build_statistics.com)。然后我使用一个Ruby脚本通过imap获取邮件并处理它们以确定我们的构建失败时间。

我没有直接解析xml文件,因为我必须解析时间范围内的每个xml文件来建立时间线,然后再查看时间线进行计算。这似乎对于获取这样一个简单的统计数据来说太复杂了。


更新:这证明是一个可怕的难以维护的解决方案。:P - bhazzard

0

我喜欢cc.net,但在这种情况下,TeamCity可以为您完成此操作。它还有许多其他很棒的统计数据。对于少于20个项目,它是免费的。


TeamCity看起来非常不错。出于好奇,如何使用TeamCity回答这个问题? - bhazzard
@bhazzard - Team City 为每个构建配置的统计信息显示了一天、一周、一个月、一个季度、一年或所有时间内修复构建的时间。他们的文档展示了统计页面的一个例子http://confluence.jetbrains.net/display/TCD5/Statistics。它还具有 restful api ,你可以使用它来查询。我不能说我已经尝试过查询方法。我只是看图表。 - Mike Two

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接