我试图找出如何确定导致构建在脚本化的Jenkins文件中运行的原因。原因是我在docker容器中有一个脚本我想在cron作业上运行,所以当cron作业触发时,我只是想让它运行容器,但当我推动更改时,我希望它检查出来代码,重建容器,运行静态代码分析,运行测试等。在cron运行中不需要所有这些。
我怎样才能得到原因?我试过了currentBuild.getCauses()
,但我得到了
groovy.lang.MissingMethodException: No signature of method: org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper.getCauses() is applicable for argument types: () values: []
我试过了println currentBuild.getRawBuild().getCauses()
,但得到了
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper getRawBuild
如何在我的jenkins文件中找到构建的原因?
答案 0 :(得分:1)
manager.build.causes
使用时,您需要批准这些签名
method org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildRecorder$BadgeManager getBuild
method hudson.model.Run getCauses
希望有所帮助
答案 1 :(得分:0)
触发版本(getUpstreamProject)的项目名称和版本号(getUpstreamBuild):
currentBuild.rawBuild.getCauses().get(0).getUpstreamProject()
currentBuild.rawBuild.getCauses().get(0).getUpstreamBuild()
或者我认为可能不需要更改权限的另一种方式: currentBuild.getUpstreamBuilds().get(0).getProjectName()
我需要在上游项目的分支中进行工作:
currentBuild.getUpstreamBuilds().get(0).getRawBuild().getEnvVars().get("BRANCH_NAME", "")
以下是文档:getEnvVars()
顺便说一下,您必须启用一堆权限。
答案 2 :(得分:0)
此Groovy代码将获得触发项目的名称(并且可以在Groovy沙箱中正常运行):
String getTriggeringProjectName() {
if (currentBuild.upstreamBuilds) {
return currentBuild.upstreamBuilds[0].projectName
} else {
return ""
}
}