3

我正在为各种Scala项目寻找持续集成工具。到目前为止,我找到了Jenkins ,它显然通过Sbt的插件支持 Scala 项目,以及Pulse,它不直接支持 Scala 项目,但声称它可以轻松集成任何与 Sbt 匹配的命令行构建工具。我对 CI 没有任何实际经验,但阅读了几篇关于它的文章,通常与 Java 相关。

除了通常的功能,例如支持各种代码版本控制系统发布夜间构建我希望能够记录一堆统计数据,随着时间的推移绘制它们并在某些数字意外变化时触发通知,即超过定义因素。本质上,测试套件中的每个测试都会在最后打印一些统计信息,这些统计信息可以通过正则表达式提取然后持久化(与它们来自的测试用例相关联)。

理想情况下,还有一种简单的方法可以对记录的统计信息创建查询,例如,将测试套件的最后一次运行与之前的进行比较。然而,这可能不是可以直接在 CI 工具中完成的事情,但至少应该可以以可查询的格式(例如 XML 或 JSON)导出记录的数据。

欢迎任何提示,链接或经验报告!


编辑1:

在某种意义上,这些统计信息不是 JVM 统计信息,例如代码覆盖率或内存消耗。它们与项目执行的实际工作有关,例如,排序算法执行的比较次数,或 SAT 求解器中冲突分配的次数。这些数字在每次运行结束时打印到 stdio,或写入文件。CI 工具应该“只”允许我将它们呈现为随时间变化的图表,或者执行简单的分析(总和、经络),或者当数字偏离平均值时发送邮件。

4

3 回答 3

4

你可以编写一个 Jenkins 插件来收集这个标准输出并完成你所要求的一切。作为获取标准输出的替代方法,将该输出重定向到文件,并让插件读取该文件。

无论如何,有很多插件在做这种事情。只需查看 Jenkins 教程,也许可以获取一个执行类似操作的插件作为示例。

最后一点,我知道Travis CI也支持 Scala,虽然我没有这方面的经验,所以我不知道他们是否支持你的要求。

于 2012-06-22T20:16:50.897 回答
4

我们(Atlassian——我工作的公司)销售Bamboo,它确实支持 SBT 以及 Maven 构建(使用 maven-scala 插件)。我们确实在内部将这些用于我们的 Scala 项目,而且设置起来并不难。它具有您正在寻找的大部分历史特征。

于 2012-06-22T01:01:19.357 回答
0

对于 CI 系统中的 Scala 支持,检查构建工具的支持更为相关。

其中 maven、gradle、ant 和 sbt 可以处理 Scala,我希望每个 CI 系统至少支持前 3 个。Jenkins 肯定支持。

为了收集统计数据,寻找适用于 java 字节码的工具,它们应该也能够处理 Scala 编译器生成的字节码。

Sonar收集大量统计数据并通过网站提供。看看哪些统计数据对 java 有意义是值得的。

对于突然变化的触发事件,您可以查询 Sonar 的数据库。

关于更新问题的更新:

Teamcity 支持渲染自定义图表:

http://confluence.jetbrains.net/display/TCD65/Custom+Chart

http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-ReportingBuildStatistics

http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-provideStatsUsingFile

几年前使用成功。

詹金斯有一个插件,但我个人没有让它工作,当我尝试了很短的时间。

https://wiki.jenkins-ci.org/display/JENKINS/Measurement+Plots+Plugin

于 2012-06-22T09:18:19.793 回答