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查询状态等黑客行为)的作业的上次构建状态?
如果您在进行构建后getRawBuild从“管理 Jenkins” > “进程内脚本批准”批准该方法,则即使在 groovy 沙箱中,您也可以使用下一个构建中的该方法。RejectedAccessException
此外,在获得针对脚本的每种方法的异常后,getRawBuild您需要一一批准getPreviousBuild。getResult
无需访问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
| 归档时间: |
|
| 查看次数: |
7521 次 |
| 最近记录: |