确定 Jenkinsfile 是否从多分支管道运行
Determine whether a Jenkinsfile runs from a multibranch pipeline
我有一个多分支管道,运行 是 Jenkinsfile
个 select 个分支。现在我需要 运行 相同的 Jenkinsfile
参数,所以我想我可以使用常规管道。
现在我要做的就是确定我 运行 是否在多分支管道中。我可以检查构建中的任何参数,如果没有任何参数,我可以推断出我在多分支管道中:
def isMultibranchPipeline() {
!params.any()
}
我正在寻找一种更直接的方法来了解脚本是否 运行 正在多分支管道中,但找不到类似的方法。
通过获取当前的“项目”(这是一个 Jenkins 工作),你可以知道它是否是一个多分支工作,这要归功于它的 class:
import jenkins.model.Jenkins
import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject
def isMultiBranchPipeline() {
return Jenkins.get().getItem(currentBuild.projectName) instanceof WorkflowMultiBranchProject
}
如果作业是 PipelineMultiBranchDefaultsProject 之前的方法无效。我是
检查 scm 对象
boolean isMultiBranchPipeline() {
try {
if (script.scm)
return true
} catch (Exception e) {
return false
}
}
我有一个多分支管道,运行 是 Jenkinsfile
个 select 个分支。现在我需要 运行 相同的 Jenkinsfile
参数,所以我想我可以使用常规管道。
现在我要做的就是确定我 运行 是否在多分支管道中。我可以检查构建中的任何参数,如果没有任何参数,我可以推断出我在多分支管道中:
def isMultibranchPipeline() {
!params.any()
}
我正在寻找一种更直接的方法来了解脚本是否 运行 正在多分支管道中,但找不到类似的方法。
通过获取当前的“项目”(这是一个 Jenkins 工作),你可以知道它是否是一个多分支工作,这要归功于它的 class:
import jenkins.model.Jenkins
import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject
def isMultiBranchPipeline() {
return Jenkins.get().getItem(currentBuild.projectName) instanceof WorkflowMultiBranchProject
}
如果作业是 PipelineMultiBranchDefaultsProject 之前的方法无效。我是 检查 scm 对象
boolean isMultiBranchPipeline() {
try {
if (script.scm)
return true
} catch (Exception e) {
return false
}
}