我在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构建作业最终失败,但是创建了报告。
我想知道,也许我可以在变量中捕获第一个命令的结果,继续第二个命令,然后然后在第二个命令之后抛出它。
答案 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