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

tow*_*wel 3 jenkins multibranch-pipeline

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

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

def isMultibranchPipeline() {
    !params.any()
}
Run Code Online (Sandbox Code Playgroud)

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

Dev*_*ine 5

购买当前的“项目”(这是 Jenkins 的工作),您可以知道它是否是多分支工作,这要归功于它的类:

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

def isMultiBranchPipeline() {
    return Jenkins.get().getItem(currentBuild.projectName) instanceof WorkflowMultiBranchProject
}
Run Code Online (Sandbox Code Playgroud)