确定Jenkinsfile是否从多分支管道运行

时间:2018-12-16 16:15:50

标签: jenkins multibranch-pipeline

我有一个运行Jenkinsfile的选择分支的多分支管道。现在,我需要使用参数运行相同的Jenkinsfile,所以我认为可以使用常规管道。

现在我要做的就是确定我是否在多分支管道中运行。我可以检查构建中是否有任何参数,并且在没有参数时可以推断出我在多分支管道中:

def isMultibranchPipeline() {
    !params.any()
}

我正在寻找一种更直接的方法,以了解脚本是否在多分支管道中运行,但是找不到类似的东西。

2 个答案:

答案 0 :(得分:1)

买得到当前的“项目”(这是詹金斯的工作),由于其类,您可以知道它是否是多分支工作:

import jenkins.model.Jenkins
import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject

def isMultiBranchPipeline() {
    return Jenkins.get().getItem(currentBuild.projectName) instanceof WorkflowMultiBranchProject
}

答案 1 :(得分:0)

如果作业为PipelineMultiBranchDefaultsProject,则先前的方法无效。我是 检查scm对象

boolean isMultiBranchPipeline() {
    try {
      if (script.scm)
        return true
    } catch (Exception e) {
      return false
    }
  }
相关问题