获取以前的构建结果

时间:2016-10-27 12:43:35

标签: jenkins-pipeline jenkins-2

我希望模仿原始Jenkins在构建变得不稳定/失败或再次成功时执行操作(如发送通知)的行为。

为此,我需要查询以前的构建状态,可以这样做:

currentBuild.rawBuild.getPreviousBuild()?.getResult().toString()

但是,rawBuild应该是一个“危险”的对象,因此被列入黑名单cannot be executed inside the Groovy sandbox

现在,因为我从SCM加载我的Jenkins脚本,所以我无法在每个项目级别停用Groovy沙箱,但仅限于整个Jenkins实例(即through this),这肯定不是我想要的。

是否还有其他方法可以确定符合沙箱原则的作业的最后构建状态(并且不包括通过Jenkins的REST API查询状态的黑客攻击)我错过了哪些内容?

2 个答案:

答案 0 :(得分:4)

如果您从管理Jenkins >批准方法getRawBuild在构建上获得RejectedAccessException后,进程内脚本批准, 你甚至可以在groovy沙箱中使用下一个版本的方法。

getRawBuild之外,您需要在针对脚本的每种方法获得异常后逐一批准getPreviousBuildgetResult

答案 1 :(得分:2)

无需访问rawBuild,您可以在没有任何特殊权限的情况下执行以下操作:

currentBuild.getPreviousBuild().result

这将允许您查看上一个版本的结果,而无需Jenkins管理员设置任何特殊权限。它应该可以在任何地方运行。

管道API参考:https://qa.nuxeo.org/jenkins/pipeline-syntax/globals#currentBuild

更多信息:https://support.cloudbees.com/hc/en-us/articles/217591038-How-to-Iterate-Through-the-Last-Successful-Builds-in-Pipeline-Job