Jenkinsfile:如何获取构建的触发器

时间:2018-05-21 16:50:47

标签: jenkins groovy jenkins-pipeline jenkins-groovy

我试图找出如何确定导致构建在脚本化的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文件中找到构建的原因?

3 个答案:

答案 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 ""
    }
}