2011-08-09 125 views
21

有谁知道一种方法来与R编程持续集成吗?我知道像svUnit软件包这样的工具可以进行单元测试,但是有没有人试图用Hudson/Jenkins运行这些工具?持续集成(Hudson/Jenkins)和R编程

+0

+1我也对此感兴趣,以便自动从CRAN中捕获打破我的测试的软件包更新。我希望我能够轻松地向上游发送一堆测试,以帮助软件包开发人员,但是自动化测试现在可以完成。 – Iterator

+1

只是想知道@Iterator还是Travis试用了最新的svUnit。根据我的说法,svUnit在Jenkins中提供了非常好的整合,所以看到Dirks回答“被接受”,这让我觉得你还没有把它推进。 – mariotomo

+0

@mariotomo - 感谢您的提醒 - 我一定会检查出来。我有一个即将到来的项目需要使用这样的测试。 – Iterator

回答

12

我没有看到任何特别的问题。这些东西往往是脚本所以可以只

  • 点到你的仓库顶部
  • ň分钟每个签入,遍历源目录后
  • 每个
  • 调用R CMD check您包必须设置为使用单元测试,您可以使用这些单元测试
    • RUnit这是初始单元测试g表示R;它被广泛应用于
    • testthat这是哈德利更新包,并通过他的许多包
    • svUnit由Philippe其中AFAIK从来没有流行起来是完全一样的另外两个使用。

那可真是不从编译语言的持续集成任何不同。你的问题实际上是关于如何在R中进行单元测试,而这个问题已经被覆盖过。

+3

你写的是非常真实的 - 一般来说,这个问题明确提到Jenkins/Hudson,据我所知,[svUnit]提供了最好的集成(https://r-forge.r-project.org/scm /viewvc.php/pkg/svUnit/R/?root=sciviews)。看到我的其他答案。 ...国际海事组织,只要能够执行脚本单元测试,如果结果的格式不符合所选的持续集成工具,就没有多大用处。 – mariotomo

+0

如果R CMD检查失败,任何关于让Jenkins显示构建的建议都失败了? –

+1

当然,看看有'dump_logs'函数的新的[github上的r-travis项目](https://github.com/craigcitro/r-travis)。 –

1

Hudson/Jenkins支持运行bash脚本。我认为你可以用它作为你的R世界的入口。在R中,保持结果的一种简单方法是使用sink(“toYourFile.txt”),然后使用CI的结果显示函数来显示toYourFile.txt。

+0

很容易让CI显示文件,你如何得到它来识别错误? –

+0

“如何识别错误?”,您需要输出的格式可以被Jenkins识别,这正是您可以使用“junit”协议对svUnit所做的事情。 – mariotomo

4

在办公室我们一直在使用Hudson/Jenkins。我贡献了integration of svUnit to Jenkins,所以我强烈建议你在尝试其他方面之前使用svUnit。

看看我维护的两个库:loggingdelftfews或在我自己试图按照zooredistribute it on github

我最近一直没做家务,所以这三个脚本(在zoo,logging,delftfews)都略有不同。如果任何测试失败,我的动物园版本中的一个将停止。这在您运行R CMD check时很实用,但在进行持续集成时可能不是一个好主意。

+0

你能澄清如何触发詹金斯失败,或者在svUnit代码中提到的地方?我无法在svUnit软件包文档或小插图中找到任何相关文本,而且我从您编写的脚本(我是CI新手)中不清楚什么会触发Jenkins通过/失败。它只是回应stderr吗? –

+0

你说你是新来的CI,我建议你阅读Jenkin的手册以了解它的结构,也许你想看一下正在工作的Jenkins服务器? (例如:https://csvjdbc.ci.cloudbees.com/job/csvjdbc/)你的源代码中的任何已提交的更改将触发Jenkins运行你注册的任何脚本,并且在脚本成功完成后,它将使用生成的报告发布成功/失败/跳过的测试。 – mariotomo

+0

您是如何根据报告设置成功/失败的?詹金斯的标准是? – bobK