我希望模仿原始Jenkins在构建变得不稳定/失败或再次成功时执行操作(如发送通知)的行为。
为此,我需要查询以前的构建状态,可以这样做:
currentBuild.rawBuild.getPreviousBuild()?.getResult().toString()
但是,rawBuild
应该是一个“危险”的对象,因此被列入黑名单cannot be executed inside the Groovy sandbox。
现在,因为我从SCM加载我的Jenkins脚本,所以我无法在每个项目级别停用Groovy沙箱,但仅限于整个Jenkins实例(即through this),这肯定不是我想要的。
是否还有其他方法可以确定符合沙箱原则的作业的最后构建状态(并且不包括通过Jenkins的REST API查询状态的黑客攻击)我错过了哪些内容?
答案 0 :(得分:4)
如果您从管理Jenkins >批准方法getRawBuild
在构建上获得RejectedAccessException
后,进程内脚本批准,
你甚至可以在groovy沙箱中使用下一个版本的方法。
除getRawBuild
之外,您需要在针对脚本的每种方法获得异常后逐一批准getPreviousBuild
和getResult
。
答案 1 :(得分:2)
无需访问rawBuild
,您可以在没有任何特殊权限的情况下执行以下操作:
currentBuild.getPreviousBuild().result
这将允许您查看上一个版本的结果,而无需Jenkins管理员设置任何特殊权限。它应该可以在任何地方运行。
管道API参考:https://qa.nuxeo.org/jenkins/pipeline-syntax/globals#currentBuild