Jenkins / Hudson没有捕获Perl脚本错误

时间:2012-08-24 18:01:50

标签: perl error-handling hudson jenkins

我目前正在使用Jenkins / Hudson触发Perl脚本,但是,我正在努力找出适当的异常是什么让一些Jenkins选择它。在控制台中,它显示了perl脚本错误,但是Jenkins完成了Build Success。

我已经尝试过die命令和退出1的系统打印中的大量内容,但它似乎仍然没有抓到任何内容。

任何帮助都会很棒!先谢谢!

3 个答案:

答案 0 :(得分:3)

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

也许你在perl之后有另一个shell命令退出零? Jenkins没有看到各个进程的每个退出代码。 Jenkins只是将您输入的脚本放入临时文件中,并在临时文件上调用/bin/sh。当脚本失败时,您可以使脚本以非零退出。

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

答案 1 :(得分:1)

我在Linux和Windows上运行Jenkins工作时遇到了这个问题。我了解(很难)Linux返回代码必须介于0到255之间。如果返回代码超出此范围,则返回代码将设置为0. Perl文档指出die()的返回代码是非零,但不再具体。 因此,如果你的die()调用生成的非零返回代码不在0到255之间,Linux会将其视为零。

答案 2 :(得分:0)

我使用了TAP::Harness::JUnit。它会将TAP输出包装在XML文档中,然后将XML传送到Hudson服务器以供Hudson使用。

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