7

我应该在竹子中运行一些 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 文件。因此,一旦竹子构建运行并且即使所有测试都通过了,我也会得到红色构建,并显示消息“没有找到失败的测试,可能发生了编译错误”。

有人可以在这方面帮助我吗?

4

3 回答 3

17

您的构建脚本可能会生成成功的测试报告,但您的一项(或两项,可能)任务失败了。这意味着失败可能发生在您的测试完成后。检查您的构建日志是否有错误。您也可以尝试登录到您的 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 无法将表达式与任何进程匹配,则它会静默返回非零值。

于 2012-07-17T22:19:20.853 回答
4

我的解决方案是制作一个“脚本”任务:

#!/bin/bash
/usr/local/bin/phpcs --report=checkstyle --report-file=build/logs/checkstyle.xml --standard=PSR2 ./lib | exit 0

它总是以状态 0 退出。

这是因为 PHP 代码嗅探器在仅发现 1 个导致构建失败的编码违规(警告/错误)时返回退出状态 1。

于 2013-03-19T08:07:18.183 回答
2

原来是一个简单的修复。

一般竹子行为是扫描整个日志并查看任何故障代码(1)。对于这个特定的配置,我有一些 6 个脚本,其中一个是杀死 xvfb(帧缓冲区)。由于某种原因,服务器无法杀死 xvfb,并且该任务返回了失败代码。因此,尽管所有测试都通过了,但竹子从以前的任务中得到了一个错误代码,并且构建失败了。

当前的修复是删除杀死 xvfb 并且构建变绿的任务!\o/。

于 2012-07-19T19:04:34.090 回答