简短的回答是:你不能做到这一点与multibranch pipeline
。多分支管道仅设计(至少现在)以Pipeline script from SCM
风格执行特定管道,在项目的根部固定使用Jenkinsfile
。您可以使用Multi-Branch Project插件制作多分支自由式项目。首先,您需要像定义multibranch pipeline configuration
一样定义您的multibranch freestyle configuration
。 选择这个新的项目如下所示:

这种类型的配置将表现为multibranch pipeline
类型完全一样,也就是说,它会造成你与你配置的名称和子项目的文件夹它自动检测到的每个分支。
实现应该然后是小菜一碟:
- 指定您
SCM
库在多分支配置
- 调用另一个构建作为构建的一部分/后建立,你会在一个标准的做自由式项目,除了必须调用参数化作业(我们称之为
build-job
)并为其提供存储库信息,即Git URL和当前分支(您可以使用预定义变量$GIT_URL
和$GIT_BRANCH
用于此目的)
- 在您的
build-job
中,只需定义从SCM签出的内嵌管道或管道脚本,然后在此脚本中执行SCM签出并继续执行您需要构建的步骤。 build-job
管道内容示例:
。
node() {
stage 'Checkout'
checkout scm: [$class: 'GitSCM', branches: [[name: '*/${GIT_BRANCH}']], userRemoteConfigs: [[url: '${GIT_URL}']]]
stage 'Build'
// Build steps...
}
当然,如果你的不同multibranches项目需要有点区别对待,你也可以使用中间项目(假设build-project-A
,build-project-B
,...),将依次调用通用build-job
管道)
的一个,这种解决方案的主要缺点是,你将只负责对所有的建立一个作业,使其更难调试。如果成功/失败,您仍然可以让您的多分支项目变为蓝/红色,但您必须返回build-job
才能找到构建的真正问题。
该自由式多分支选项现在似乎已正式废弃。 Jenkins _does目前没有提供一个选项来为Jenkinsfile完全不存在的项目进行多分支构建。这真的很糟糕 – kert