我在几台服务器上进行了大量测试。我使用Jenkins来管理所有这些。 在一台服务器(Slave Windows)上,当我在cmd中启动测试时,我得到了类似的东西:
c:/tests/cucumber --tag @dev -p ie
...
1 scenarios (1 passed)
12 steps (12 passed)
0m31.761s
echo %errorlevel%
0
测试中没有错误,黄瓜似乎很好。
当jenkins完成相同的测试时,我得到:
c:/jenkins_folder/cucumber --tag @dev -p ie
...
1 scenarios (1 passed)
12 steps (12 passed)
0m28.453s
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE
测试通过,但被詹金斯标记为失败。
命令" echo%errorlevel%"中止:在此之前工作失败。
Windows批处理代码:
cd /test8folder
cucumber --tag @dev -p ie
echo %errorlevel%
我错过了什么?
答案 0 :(得分:1)
配置似乎没有任何问题。
你在黄瓜命令之后得到Build step 'Execute Windows batch command' marked build as failure
而没有实际看到执行echo %errorlevel%
的事实只会再次证明黄瓜有错误(稍后会更多)。
然而,在执行Windows批处理命令中,即使错误的命令也不会退出批处理脚本(与Jenkins的默认执行Shell 实现不同) )。你应该至少看到一些退出代码,0,1或任何东西。
唯一的一次是,如果你的构建步骤中的某些内容被执行exit /b [exit_code_num]
。我不知道“黄瓜”,但如果它实际上是一个cucubmer.bat
并且里面有一个exit /b
语句,这就是导致它在没有继续的情况下退出构建步骤的原因。
您可以使用 call cucumber [whateverparams]
,这样即使退出exit /b
,控件也会返回调用进程执行Windows批处理命令 script。
先尝试一下。你可能会看到你的echo %errorlevel%
在Jenkins下执行时可能会返回一个非零值,但至少你现在会看到它。
现在,至于为什么它在命令提示符下成功,但在Jenkins中失败,可能有很多原因,最常见的原因是环境变量和路径。一旦我们真正看到黄瓜的退出代码,我们可以解决这个问题。你还说它在另一个节点上工作:更有理由相信这是一个环境问题,也许是一个不存在的文件夹......
<强> 编辑: 强>
甚至“成功”测试执行退出调用脚本的原因是因为exit /b 0
仍然会退出调用脚本,即使黄瓜退出并且“成功”0