Joo*_*oer 4 scala sbt jenkins sonarqube
对于Jenkins的SonarQube工作,即使某些测试可能会失败,我们仍希望继续.目前Sonar Runner没有开始,因为测试失败了.在Maven中你只需添加-DtestFailureIgnore = true
,但我找不到任何类似的SBT.
我确实找到了onFailure
sbt 的东西,但没有找到任何地方如何使用它的例子.这可以用来忽略测试失败,这样构建工作就会继续,所以Sonar Runner会在之后启动吗?
或者Jenkins中有一个设置忽略构建的结果?我们使用'sbt clean coverage test coverageReport'作为构建命令,并在构建后步骤中使用Sonar Runner.
终于找到了解决方案.
在SBT中,您可以定义一个新任务A,它捕获另一个任务B的结果.此依赖关系确保在启动新任务A时运行任务B. 通过捕获结果,任务B的结果不是任务A的结果,因此如果B失败,则A不会(必须)失败.
所以在这种情况下,我添加了为'build.sbt'创建了一个新的'ciTests'任务
// Define a special test task which does not fail when any test fails,
// so sequential tasks (like SonarQube analysis) will be performed no matter the test result.
lazy val ciTests = taskKey[Unit]("Run tests for CI")
ciTests := {
// Capture the test result
val testResult = (test in Test).result.value
}
Run Code Online (Sandbox Code Playgroud)
现在,在Jenkins工作中,它使用带有命令的SBT构建项目(使用SCoverage SBT插件):
update coverage ciTests coverageReport
Run Code Online (Sandbox Code Playgroud)
此构建将成功忽略任何失败的测试.因此,启动SonarRunner的下一个构建步骤将开始分析Scala项目并将结果放入SonarQube.
感谢@ hugo-zwaal指点我这个答案帮助我解决了我的问题.
归档时间: |
|
查看次数: |
1191 次 |
最近记录: |