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

Jenkinsfile:如何获取构建的触发器,jenkins,groovy,jenkins-pipeline,jenkins-groovy,Jenkins,Groovy,Jenkins Pipeline,Jenkins Groovy,我试图找出如何确定是什么导致构建从脚本文件中运行。原因是我在docker容器中有一个脚本,我想在cron作业上运行它,所以当cron作业触发时,我只想让它运行容器,但当我推动更改时,我想让它签出代码,重建容器,运行静态代码分析,运行测试,等等。在cron运行上不需要所有这些 我怎样才能找到原因?我尝试了currentBuild.getCauses(),但是我失败了 groovy.lang.MissingMethodException: No signature of method: org.je

我试图找出如何确定是什么导致构建从脚本文件中运行。原因是我在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文件中找到生成的原因

manager.build.causes
要使用,您需要批准这些签名

method org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildRecorder$BadgeManager getBuild
method hudson.model.Run getCauses
希望能有帮助

要使用,您需要批准这些签名

method org.jvnet.hudson.plugins.groovypostbuild.GroovyPostbuildRecorder$BadgeManager getBuild
method hudson.model.Run getCauses

希望它有助于

触发版本的项目名称()和版本号():

或者我认为可能不需要更改权限的另一种方式:

我需要上游项目的分支机构参与我正在进行的工作:

currentBuild.getUpstreamBuilds().get(0).getRawBuild().getEnvVars().get("BRANCH_NAME", "")
以下是关于这方面的文件:


顺便说一下,您必须启用大量权限。

触发生成的项目名称()和生成编号():

或者我认为可能不需要更改权限的另一种方式:

我需要上游项目的分支机构参与我正在进行的工作:

currentBuild.getUpstreamBuilds().get(0).getRawBuild().getEnvVars().get("BRANCH_NAME", "")
以下是关于这方面的文件:


顺便说一下,您必须启用大量权限。

此Groovy代码将获得触发项目的名称(并且在Groovy沙盒中运行良好):

String getTriggeringProjectName(){
if(currentBuild.upstreamBuilds){
返回currentBuild.upstreamBuilds[0]。项目名称
}否则{
返回“”
}
}

此Groovy代码将获得触发项目的名称(并且在Groovy沙箱中运行良好):

String getTriggeringProjectName(){
if(currentBuild.upstreamBuilds){
返回currentBuild.upstreamBuilds[0]。项目名称
}否则{
返回“”
}
}

我遇到了这个问题,并找到了两种解决方法:1)管理Jenkins,然后在流程脚本中批准并批准该调用,或2)将命令放入库中的函数中,该函数可以完成所有需要的工作,或返回字符串或数组或任何生成原因
currentBuild.getCauses()
不存在(我假设),并且
currentBuild.getRawBuild().getCauses()存在,但被安全性阻止。我花了一段时间才正确地构建了一个库,但这里的大部分信息都支持这一点。看一看。@JoaoVitorino我不能在Jenkins文件中使用它。查看问题中的详细信息我遇到了这个问题,并找到了两种解决方法:1)管理Jenkins,然后在流程脚本中批准并批准该调用,或2)将命令放入库中的函数中,该函数可以完成您需要的所有工作,或返回字符串或数组或任何生成原因
currentBuild.getCauses()
不存在(我假设),并且
currentBuild.getRawBuild().getCauses()存在,但被安全性阻止。我花了一段时间才正确地构建了一个库,但这里的大部分信息都支持这一点。看一看。@JoaoVitorino我不能在Jenkins文件中使用它。查看问题中的详细信息这是迄今为止最好的解决方案,不需要批准存在安全漏洞的脚本是一个巨大的优点这是迄今为止最好的解决方案,不需要批准存在安全漏洞的脚本是一个巨大的优点