Jenkins/Hudson没有发现Perl脚本错误



我目前正在使用Jenkins/Hudson触发Perl脚本,但是,我很难找到抛出一些Jenkins-pick的正确异常。在控制台中,它显示perl脚本的错误与预期的一样,但Jenkins以BuildSuccess结束。

我已经尝试了很多来自die命令和出口1的系统打印的东西,但它似乎仍然没有捕捉到任何东西。

任何帮助都会很棒!提前感谢!

Jenkins认为以非零退出的构建步骤失败。它应该足以die()

也许在perl之后还有另一个shell命令,它以零退出?Jenkins并没有看到来自各个进程的每个退出代码。Jenkins只需将您在构建步骤区域中输入的脚本放入一个临时文件中,并在该临时文件上调用/bin/sh。当脚本失败时,您可以让脚本以非零退出。

最简单的方法是从#!/bin/sh -xe开始编写脚本。如果你研究shell手册页,你会发现-e选项会让shell在任何进程以非零退出时停止脚本。

我在Linux和Windows上运行Jenkins作业时遇到了这个问题。我(艰难地)了解到Linux返回代码必须在0到255之间。如果返回代码在此范围之外,则返回代码将设置为0。Perl文档指出die()的返回代码是非零的,但不再是特定的。因此,如果您的die()调用生成一个不在0和255之间的非零返回代码,Linux将把它视为零。

我使用了TAP::Harness::JUnit。它将把TAP输出封装在一个XML文档中,然后XML将通过vi SCP传递到Hudson服务器,供Hudson使用。

让hudson命令正确地执行所有shell命令需要一些争论,但我的意思是,两到三次尝试正确地设置所有路径。

最新更新