从Jenkins管道获取失败原因

时间:2017-12-16 06:35:03

标签: jenkins jenkins-pipeline

我正在为Jenkins设置声明性管道。在我的post部分中,我使用slackSend通知我的团队构建已损坏。我想包括失败原因。这可以在envcurrentBuild或其他地方使用吗?我在文档中没有看到任何内容,但似乎是一个常见的用例

我已经看过一些关于使用currentBuild.rawBuild.getLog(10)的帖子,但这有用,但它只是填充了太多的信息。我需要了解实际的异常

2 个答案:

答案 0 :(得分:2)

另一种方法是use a catchError或至少a try/catch 然后,作为in this answer,您可以收到错误消息:String error = "${e}";

关于catchError,您可以将可能失败的每一步都包装到catchError函数中。如果发生错误,则会将build.result设置为FAILURE,并继续构建。

请参阅catchError,其中指出只有try/catch方法可能有助于捕获实际错误e(及其字符串)。
然后,您可以将该错误字符串添加到全局变量中,然后您的post步骤可以访问 这比currentBuild.rawBuild.getLog(10)更简洁和/或更精确。

答案 1 :(得分:0)

如果您可以调用curl命令,这就是我最近在bash脚本中使用的方法。

full_error_msg=$(curl -s -k -X GET $url/job/$job_name/lastBuild/consoleText 2> /dev/null | tac | grep Error | head -n 2 | tr -d '\n')

由于错误消息通常在构建结束时出现,因此我使用tac命令翻转输出,使用grep替换包含“ Error”的行,然后在接下来的两行中删除这两个Error行之间的回车符。