背景
经过大量的艰苦工作,我们终于得到了一个Jenkins CI从GitHub仓库中提取代码,现在正在进行持续集成和部署。
我们获取代码,并像往常一样,仅在所有测试都通过的情况下才部署它。
现在我已经检查了一些Java插件,它们除了运行测试之外,还做测试覆盖,比如Cobertura。
但我们不用Java我们用Elixir
在Elixir的世界里,我们有excoveralls,这是工作服API的一个外观。工作服API supports jenkins,所以我有理由为Jenkins找到一个工作服插件。
我错了。什么都没有。
个问题
所以现在我有一个基本上无用的测试覆盖度量,因为我不能将它与Jenkins集成。
有没有任何Erlang/Elixir插件可以与Jenkins一起使用以实现代码覆盖?
我还在项目中创建了一个问题(似乎已被放弃...)https://github.com/parroty/excoveralls/issues/167
3条答案
按热度按时间sdnqo3pr1#
我有一个阶段,以发布我的Jenkins文件的覆盖面。我不知道如果这是你想要的指标,但...
oymdgrw72#
我发现了两种方法:
1.将十六进制包JUnit formatter与junit post pipeline step一起使用
1.将covertool与Cobertura Jenkins插件一起使用
选项1
这个解决方案很好用,也很不错。它迫使我改变
test_helper.exs
,但总体来说这是一个小的不便。它很不错,但它只提供了最基本的报告,对我来说这就是它失败的地方。选项2
我决定采用的选项。是的,让
Jenkinsfile
为Cobertura工作是一场噩梦,特别是因为在以前的版本中这甚至是不可能的,而且因为到处都是相互矛盾的信息。然而,一旦你开始使用
Jenkinsfile
,你就可以从Cobertura中获取那些漂亮的报告。Cobertura是用Java开发的,没有第二种方法。在报告中你可以看到类覆盖率之类的东西,但是你可以很容易地将其转换为模块。界面提供了更多的信息,并随着时间的推移跟踪覆盖率,这正是我真正想要的。为了便于将来通知,下面是我的
Jenkinsfile
:注意:1.我对我的代码非常纳粹,所以我也使用Credo。你可以进一步配置它,使其不因为你 * 错过了 * 文件末尾的一个新行而破坏整个管道,但正如我所说的,我对我的代码非常纳粹。2.部署阶段只在推送的分支是Master时运行。还有其他方法可以做到这一点,但是我发现对于一个小项目来说有这样的方式已经足够好了。
总的来说,我现在喜欢covertools,但我不知道第一个解决方案是否有同样的潜力。至少我没有看到它。
希望这篇文章能有所帮助!
原始线程:
pnwntuvh3#
另一种发布Jenkins for Elixir项目报道的方法是使用ExCoveralls选项mix coveralls.post。这允许您从任何主机发布报道,包括您的Jenkins服务器。基于Jenkins教程页面上的示例,您可以在Jenkins文件中编写如下内容: