我找到了两种方法:
- 将 Hex 包JUnit 格式化程序与 junit post 管道步骤一起使用
- 将covertool与Cobertura Jenkins pluing一起使用
选项1
该解决方案有效并且非常好。它迫使我改变,test_helper.exs
但总体而言这是一个小小的不便。这很好,但它只提供最基本的报告,对我来说这是失败的地方。
选项 2
我决定选择的选项。是的,Jenkinsfile
为 Cobertura 制作作品是一场噩梦,特别是因为在以前的版本中这甚至是不可能的,而且到处都是相互矛盾的信息。
然而,一旦你开始这样做Jenkinsfile
,你就可以从 Cobertura 撕掉那些甜蜜的报告。Cobertura 是在考虑 Java 的情况下制作的,没有两种方法。在报告中,您会看到诸如类覆盖率之类的内容,但您可以轻松地翻译这些模块。该界面提供了更多信息并随着时间的推移跟踪覆盖范围,这是我真正想要的。
为了将来的通知,这是我的Jenkinsfile
:
pipeline {
agent any
environment {
SOME_VAR = "/home/deployer"
}
stages {
stage("Build") {
steps {
sh "MIX_ENV=test mix do deps.get, deps.compile"
}
}
stage("Test") {
steps {
sh "mix test --cover"
}
}
stage("Credo"){
steps{
sh "mix credo --strict"
}
}
stage("Deploy"){
when{
expression{
env.BRANCH_NAME == "master"
}
}
steps{
sh '''
echo "Deploy with AWS or GCP or whatever"
'''
}
}
}
post{
always{
cobertura coberturaReportFile: "coverage.xml"
}
}
}
注意: 1. 我的代码非常纳粹,所以我也使用 Credo。您可以进一步配置它以不破坏整个管道,因为您错过了文件末尾的新行,但正如我所说,我的代码非常纳粹。2. Deploy 阶段仅在推送的分支为 Master 时运行。还有其他方法可以做到这一点,但我发现对于一个小项目来说,这种方式就足够了。
总的来说,我现在喜欢covertools,但我不知道第一个解决方案是否具有相同的潜力。至少我没看到。
希望这篇文章有帮助!
原帖: