获取以前的构建结果

Tho*_*ler 6 jenkins-pipeline jenkins-2

我想模仿当构建变得不稳定/失败或再次成功时,Jenkins做事的原始行为(例如发出通知)。

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

currentBuild.rawBuild.getPreviousBuild()?.getResult().toString()
Run Code Online (Sandbox Code Playgroud)

但是,它rawBuild被认为是“危险”对象,因此被列入黑名单,因此无法在Groovy沙箱内部执行

现在,由于我正在从SCM加载我的Jenkins脚本,因此我无法在每个项目级别上停用Groovy沙箱,而只能在整个Jenkins实例上(即通过this)停用,这当然不是问题我想要。

是否有其他方法可以确定我错过的符合沙盒原则(并且不包括通过Jenkins的REST API查询状态等黑客行为)的作业的上次构建状态?

ara*_*sio 5

如果您在进行构建后getRawBuild“管理 Jenkins” > “进程内脚本批准”批准该方法,则即使在 groovy 沙箱中,您也可以使用下一个构建中的该方法。RejectedAccessException

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


Nic*_*ick 5

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

currentBuild.getPreviousBuild().result
Run Code Online (Sandbox Code Playgroud)

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

全局变量参考:https : //www.jenkins.io/doc/book/pipeline/getting-started/#global-variable-reference

更具体地说,在您自己的 Jenkins 中: $ {YOUR_JENKINS_URL}/pipeline-syntax/globals#currentBuild

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