所有测试都通过了,但竹子构建失败并显示“没有找到失败的测试,可能发生了编译错误”。
Posted
技术标签:
【中文标题】所有测试都通过了,但竹子构建失败并显示“没有找到失败的测试,可能发生了编译错误”。【英文标题】:All the tests passed, but bamboo build fails with a statement "No failed tests found, a possible compilation error occurred." 【发布时间】:2012-07-17 10:08:12 【问题描述】:我应该在竹子中运行一些 jbehave(自动化)测试。一旦测试运行,我将生成一些与 junit 兼容的 xml 文件,以便竹子可以理解相同的内容。所有 jbehave 测试都作为脚本的一部分运行,因为我需要在单独的显示屏中运行 jbehave 测试(记住这些是自动浏览器测试)。示例脚本如下。
例如:
export DISPLAY=:0 && xvfb-run --server-args="-screen 0, 1024x768x24"
mvn clean integration-test -DskipTests -P integration-test -Dtest=*
我还有一个 junit 解析器任务,它指向生成的 junit 兼容 xml 文件。因此,一旦竹子构建运行并且即使所有测试都通过,我也会得到红色构建,并显示消息“未找到失败的测试,可能发生了编译错误。”
有人可以在这方面帮助我吗?
【问题讨论】:
【参考方案1】:您的构建脚本可能会生成成功的测试报告,但您的一项(或两项,可能)任务失败了。这意味着失败可能发生在您的测试完成后。检查您的构建日志是否有错误。您也可以尝试登录到您的 Bamboo 服务器(以竹用户身份)并手动运行命令。
过去,当我们的测试任务在测试运行中途崩溃时,我曾看到此消息,导致 Bamboo 忽略了一个格式错误的报告和一堆成功的报告。
*检查构建日志以确保您的测试确实在运行。如果 mvn clean 没有清除测试报告目录,Bamboo 可能只是在解析陈旧的测试报告。
编辑:(响应 Kishore 的链接)
看起来你杀死 Xvfb 的任务是导致构建失败的原因。
18-Jul-2012 09:50:18 Starting task 'Kill Xvfb' of type 'com.atlassian.bamboo.plugins.scripttask:task.builder.script'
18-Jul-2012 09:50:18
Beginning to execute external process for build 'Functional Tests - Application Release Test - Default Job'
... running command line:
/bin/sh
/tmp/FUNC-APPTEST-JOB1-91-ScriptBuildTask-4153769009554485085.sh
... in: /opt/bamboo-home/xml-data/build-dir/FUNC-APPTEST-JOB1
... using extra environment variables:
<..snip (no meaningful output)..>
18-Jul-2012 09:50:18 Failing task since return code was 1 while expected 0
18-Jul-2012 09:50:18 Finished task 'Kill Xvfb'
你的“Kill Xvfb”脚本是做什么的?你在尝试像 pkill -f "[x]vfb" 这样的东西吗? pkill -f 如果无法将表达式与任何进程匹配,则静默返回非零值。
【讨论】:
Choover,感谢您的回复。我的任何竹子任务都没有看到任何可能的错误。肯定有一些堆栈跟踪是由我的应用程序引起的。请查看构建ci.openmrs.org/browse/FUNC-APPTEST/latest 和登录ci.openmrs.org/download/FUNC-APPTEST-JOB1/build_logs/… 了解更多详情。 对不起,评论框中没有足够的空间来发布日志输出,所以我最终编辑了我的帖子——见上文^【参考方案2】:我的解决方案是制作一个“脚本”任务:
#!/bin/bash
/usr/local/bin/phpcs --report=checkstyle --report-file=build/logs/checkstyle.xml --standard=PSR2 ./lib | exit 0
总是以状态 0 退出。
这是因为 PHP 代码嗅探器在仅发现 1 个编码违规(警告/错误)导致构建失败时返回退出状态 1。
【讨论】:
同样的解决方案也适用于我们的 Windows 构建服务器。必须使用管道而不是新行作为出口,否则出口 0 不会 - 总是 - 在运行 karma 后被调用!【参考方案3】:原来是一个简单的修复。
一般竹子行为是扫描整个日志并查看任何故障代码(1)。对于这个特定的配置,我有一些 6 个脚本,其中一个是杀死 xvfb(帧缓冲区)。由于某种原因,服务器无法杀死 xvfb,并且该任务返回了失败代码。因此,尽管所有测试都通过了,但竹子从之前的任务中得到了一个错误代码,并且构建失败了。
当前的修复是删除杀死 xvfb 的任务并且构建变为绿色! \o/。
【讨论】:
哇,这正是我在回复您的评论时所说的。 叹息 酷!非常感谢您抽出一些时间查看日志输出 :) 这正是@choover 在回复您的评论时所说的。 tsc tsc tsc 您应在该回复上签名作为正确答案。以上是关于所有测试都通过了,但竹子构建失败并显示“没有找到失败的测试,可能发生了编译错误”。的主要内容,如果未能解决你的问题,请参考以下文章