获取之前的构建结果
Get previous build result
当构建变得不稳定/失败或再次成功时,我想模仿 Jenkins 的原始行为(例如发送通知)。
为此我需要查询以前的构建状态,可以这样完成:
currentBuild.rawBuild.getPreviousBuild()?.getResult().toString()
但是,rawBuild
应该是一个 "dangerous" 对象,因此被列入黑名单,cannot be executed inside the Groovy sandbox。
现在,由于我正在从 SCM 加载我的 Jenkins 脚本,所以我无法在每个项目级别停用 Groovy 沙箱,但只能针对整个 Jenkins 实例(即 through this), 这当然不是我想要的。
是否有任何其他方法可以确定我错过的符合沙盒原则的作业的最后构建状态(并且不包括通过 Jenkins 的 REST API 查询状态等黑客攻击)?
如果您从 Manage Jenkins > In-process Script Approval 批准 getRawBuild
方法 [=11] =] 在构建中,
您甚至可以在 groovy 沙箱中使用下一个构建中的方法。
除了getRawBuild
,您还需要在针对脚本的每个方法获得异常后,逐一批准getPreviousBuild
和getResult
。
无需访问 rawBuild
,您可以在没有任何特殊权限的情况下执行以下操作:
currentBuild.getPreviousBuild().result
这将允许您查看之前构建的结果,而无需 Jenkins 管理员设置任何特殊权限。它应该可以在任何地方运行。
全局变量引用:https://www.jenkins.io/doc/book/pipeline/getting-started/#global-variable-reference
更具体地说,在您自己的 Jenkins 中:${YOUR_JENKINS_URL}/pipeline-syntax/globals#currentBuild
当构建变得不稳定/失败或再次成功时,我想模仿 Jenkins 的原始行为(例如发送通知)。
为此我需要查询以前的构建状态,可以这样完成:
currentBuild.rawBuild.getPreviousBuild()?.getResult().toString()
但是,rawBuild
应该是一个 "dangerous" 对象,因此被列入黑名单,cannot be executed inside the Groovy sandbox。
现在,由于我正在从 SCM 加载我的 Jenkins 脚本,所以我无法在每个项目级别停用 Groovy 沙箱,但只能针对整个 Jenkins 实例(即 through this), 这当然不是我想要的。
是否有任何其他方法可以确定我错过的符合沙盒原则的作业的最后构建状态(并且不包括通过 Jenkins 的 REST API 查询状态等黑客攻击)?
如果您从 Manage Jenkins > In-process Script Approval 批准 getRawBuild
方法 [=11] =] 在构建中,
您甚至可以在 groovy 沙箱中使用下一个构建中的方法。
除了getRawBuild
,您还需要在针对脚本的每个方法获得异常后,逐一批准getPreviousBuild
和getResult
。
无需访问 rawBuild
,您可以在没有任何特殊权限的情况下执行以下操作:
currentBuild.getPreviousBuild().result
这将允许您查看之前构建的结果,而无需 Jenkins 管理员设置任何特殊权限。它应该可以在任何地方运行。
全局变量引用:https://www.jenkins.io/doc/book/pipeline/getting-started/#global-variable-reference
更具体地说,在您自己的 Jenkins 中:${YOUR_JENKINS_URL}/pipeline-syntax/globals#currentBuild