我正在尝试在jobDSL中创建multibranchPipelineJob,但Jenkins文件位于默认的替代位置。 我查看了文档https://jenkinsci.github.io/job-dsl-plugin/#path/multibranchPipelineJob 我看不到这样做的方法。 查看手动创建的multibranchPipelineJob的config.xml,scriptPath在该部分中,但我找不到设置此方法的DSL方法。
任何人都可以提供有关如何执行此操作的任何帮助吗? 干杯
答案 0 :(得分:13)
Job DSL现在提供了一种方法:
multibranchPipelineJob('my-build') {
factory {
workflowBranchProjectFactory {
scriptPath('path-to-Jenkinsfile')
}
}
}
确认使用Job DSL 1.69,根据发行说明,自1.67起可用。
答案 1 :(得分:3)
经过大量的谷歌搜索后,我发现了一些有效的方法:
configure {
it / factory(class: 'org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory') {
owner(class: 'org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject', reference: '../..')
scriptPath("jenkins/[where ever you want]/Jenkinsfile")
}
}
这似乎对我有用。
答案 2 :(得分:1)
这个问题仍然很受欢迎,要在JCasC中做到这一点,您可以做到
jobs:
- script: >
folder('common');
multibranchPipelineJob('common/jcasc-deploy') {
factory {
workflowBranchProjectFactory {
scriptPath('Jenkinsfile')
}
}
branchSources {
branchSource {
source {
gitSCMSource {
remote('git@gitlab.com:PROJECT/REPO.git')
credentialsId('gitlab-key')
id('jcasc-deploy')
}
}
buildStrategies {
buildAllBranches {
strategies {
skipInitialBuildOnFirstBranchIndexing()
}
}
}
}
}
triggers {
periodicFolderTrigger {
interval('1440')
}
}
configure { node ->
node / sources / data / 'jenkins.branch.BranchSource' / source / traits {
'jenkins.plugins.git.traits.BranchDiscoveryTrait'()
}
}
}
答案 3 :(得分:0)
该设置有点隐藏,但Automatically Generated DSL支持为多分支作业设置脚本路径:
multibranchPipelineJob('example') {
factory {
workflowMultiBranchProjectFactory {
scriptPath('my-location/Jenkinsfile')
}
}
}