我正在自动化 dot net core 构建
鉴于 Jenkins 文件中的以下代码片段,我为每个测试项目生成一个 XML 文件。在接下来的步骤中,我想处理这些 XML 文件。
詹金斯给出了两个选择。我很困惑该使用哪个选项。我使用“处理”还是“发布”。两者都提供了有关阈值的相同选项,两者似乎都做了相同的事情。他们都将构建标记为“失败”,并且都向 Jenkins 提供了测试报告。这是遗产吗?或者他们是完全不同的步骤,有自己的目的?
顺便说一句,这个失败检查并抛出错误是阻止 Jenkins 继续构建的唯一方法吗?当构建被标记为“失败”而无法继续其余步骤时,这似乎有点奇怪。如果我想继续,我也可以将 stopProcessingIfError 设置为 false,还是我错过了重点?
stage('Test') {
def testScript = ""
def testProjects = findFiles(glob: 'test/**/project.json')
if (!fileExists('reports/xml')) {
if (!fileExists('reports')) {
sh "mkdir reports"
}
sh "mkdir reports/xml"
}
for(prj in testProjects) {
println "Test project located, running tests: " + prj.path
def matcher = prj.path =~ 'test\\/(.+)\\/project.json'
testScript += "dotnet test --no-build '${prj.path}' -xml 'reports/xml/${matcher[0][1]}.Results.xml' || true\n"
}
sh testScript
step([
$class: 'XUnitBuilder',
thresholdMode: 1,
thresholds: [[$class: 'FailedThreshold', failureThreshold: '1']],
tools: [[
$class: 'XUnitDotNetTestType',
deleteOutputFiles: true,
failIfNotNew: true,
pattern: 'reports/xml/*.Results.xml',
skipNoTestFiles: false,
stopProcessingIfError: true
]]
])
if (currentBuild.result.equals("FAILURE")) {
throw "Test results did not pass thresholds"
}
}
查看源代码后,它们的功能似乎相同,除了XUnitPublisher
有一个额外的方法,我不明白其目的(!),并且该类在implements
list.
关键的区别似乎是XUnitPublisher
类扩展了hudson.tasks.Recorder http://javadoc.jenkins.io/hudson/tasks/Recorder.html类,同时XUnitBuilder
延长了hudson.tasks.Builder http://javadoc.jenkins-ci.org/hudson/tasks/Builder.html.
我认为面向用户的区别在于,构建器中的失败将 Jenkins 作业标记为“失败”,而发布者中的失败则将作业标记为“不稳定”。 (来源:https://wiki.jenkins.io/display/JENKINS/Terminology https://wiki.jenkins.io/display/JENKINS/Terminology)
鉴于这一切,我建议使用 xUnitPublisher。我将构建命令设置为如果编译通过但某些测试失败则返回 0。这样,Jenkins 会为我提供 FAILED 状态(表示编译损坏)和 UNSTABLE 状态(表示编译正常但测试失败)。我喜欢这样。
提交历史并不能解释为什么会出现这种荒谬的代码重复。我会理解如果一个是根据另一个来实现的,就像通常在弃用时所做的那样......可能是因为每个都必须有不同的超类。
XUnitBuilder.java https://github.com/jenkinsci/xunit-plugin/blob/207f77849172d84c4e4ae8225e345bfbb2796d45/src/main/java/org/jenkinsci/plugins/xunit/XUnitBuilder.java, XUnitPublisher.java https://github.com/jenkinsci/xunit-plugin/blob/207f77849172d84c4e4ae8225e345bfbb2796d45/src/main/java/org/jenkinsci/plugins/xunit/XUnitPublisher.java
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)