在shell命令变量中捕获jenkins作业的结果

时间:2016-03-18 10:53:27

标签: shell jenkins cucumber

我在Jenkins工作,在Execute Shell Command中使用两个命令。 第一个是测试工作,第二个是创建一个报告。它看起来像这样:

node_modules/gulp/bin/gulp.js run-cucumber-tests
node_modules/gulp/bin/gulp.js create-cucumber-report

如果测试失败,命令将以代码1退出。这意味着第二个命令甚至不会被触发。但即使第一个命令失败,我也希望创建报告!

我尝试过这样做:

node_modules/gulp/bin/gulp.js run-cucumber-tests || true
node_modules/gulp/bin/gulp.js create-cucumber-report

现在报告确实已创建,但构建标记为已成功。那不是我想要的。我希望jenkins构建作业最终失败,但是创建了报告。

我想知道,也许我可以在变量中捕获第一个命令的结果,继续第二个命令,然后然后在第二个命令之后抛出它。

1 个答案:

答案 0 :(得分:1)

即使发生错误,您也可以使用set +e让脚本继续运行,然后使用$?来捕获最后一个命令的结果。使用exit,您可以将脚本的结果代码强制为先前捕获的值。

set +e

node_modules/gulp/bin/gulp.js run-cucumber-tests
RESULT=$?

node_modules/gulp/bin/gulp.js create-cucumber-report

exit $RESULT