Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 如何检查是什么触发了詹金斯的工作?_Jenkins_Jenkins Pipeline - Fatal编程技术网

Jenkins 如何检查是什么触发了詹金斯的工作?

Jenkins 如何检查是什么触发了詹金斯的工作?,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我试图使作业参数化,但我想检查触发当前作业的上一步。如何检查?通过管道脚本,您可以执行以下操作: @NonCPS def getAllCauses(){ currentBuild.rawBuild.getCauses().toString() } 阶段('打印原因'){ echo getAllCauses() } 这将打印出如下内容: [hudson.model.Cause$UserIdCause@a05b0080] 如果您想要更详细的信息,您必须从hudson.model.Cause实例中

我试图使作业参数化,但我想检查触发当前作业的上一步。如何检查?

通过管道脚本,您可以执行以下操作:

@NonCPS
def getAllCauses(){
currentBuild.rawBuild.getCauses().toString()
}
阶段('打印原因'){
echo getAllCauses()
}
这将打印出如下内容:

[hudson.model.Cause$UserIdCause@a05b0080]
如果您想要更详细的信息,您必须从
hudson.model.Cause
实例中提取它。例如,下面是一个片段,它返回一个对生成“负责”的用户列表,如果用户对生成作出了提交,或者是他们导致了生成(即登录到web UI并单击“立即生成”按钮),则认为该用户“负责”:

@NonCPS
def getResponsibleUsers(){
def build=currentBuild.rawBuild
def users=build.getcauss().collect(){cause->
def causeType=cause.getClass()
if(causeType==jenkins.branch.BranchIndexingCause){
返回build.changeSets.collect(){set->
set.collect{entry->
entry.getAuthor()
}
}
}else if(causeType==hudson.model.Cause$UserIdCause){
返回User.get(cause.getUserName())
}否则{
返回[]
}      
}
返回用户.flatte().unique()
}
阶段(‘打印责任用户’){
echo getResponsibleUsers()
}

通过管道脚本,您可以执行以下操作:

@NonCPS
def getAllCauses(){
currentBuild.rawBuild.getCauses().toString()
}
阶段('打印原因'){
echo getAllCauses()
}
这将打印出如下内容:

[hudson.model.Cause$UserIdCause@a05b0080]
如果您想要更详细的信息,您必须从
hudson.model.Cause
实例中提取它。例如,下面是一个片段,它返回一个对生成“负责”的用户列表,如果用户对生成作出了提交,或者是他们导致了生成(即登录到web UI并单击“立即生成”按钮),则认为该用户“负责”:

@NonCPS
def getResponsibleUsers(){
def build=currentBuild.rawBuild
def users=build.getcauss().collect(){cause->
def causeType=cause.getClass()
if(causeType==jenkins.branch.BranchIndexingCause){
返回build.changeSets.collect(){set->
set.collect{entry->
entry.getAuthor()
}
}
}else if(causeType==hudson.model.Cause$UserIdCause){
返回User.get(cause.getUserName())
}否则{
返回[]
}      
}
返回用户.flatte().unique()
}
阶段(‘打印责任用户’){
echo getResponsibleUsers()
}

与jayhendren的答案类似,但我们使用的方法更简单:

/**
* Retrieves list of causes that generated job execution
*
* @return list
*/
List getCauses() {

    return currentBuild.rawBuild.getCauses().collect { it.getClass().getCanonicalName().tokenize('.').last() }

}
例如,如果是cron调度程序触发器,则返回:
['TimerTriggerCause']


从这里,您只需知道是什么原因导致您查找或不查找,然后搜索列表。

与jayhendren的答案类似,但我们使用的方法更简单:

/**
* Retrieves list of causes that generated job execution
*
* @return list
*/
List getCauses() {

    return currentBuild.rawBuild.getCauses().collect { it.getClass().getCanonicalName().tokenize('.').last() }

}
例如,如果是cron调度程序触发器,则返回:
['TimerTriggerCause']


从这里开始,你只需要知道是什么原因导致你查找或不查找,然后搜索列表。

这需要沙盒管道中的一些白名单,但我认为这是最完整的答案。对更好的内置支持是开放的。我相信它确实需要一些白名单。如果将
getResponsibleUsers()
函数放入一个共享库中,那么白名单应该是不必要的(无论如何,从理论上讲)。这需要在沙盒管道中加入一些白名单,但我认为这是最完整的答案。对更好的内置支持是开放的。我相信它确实需要一些白名单。如果将
getResponsibleUsers()
函数放入一个共享库中,那么白名单应该是不必要的(理论上,无论如何)。