Jenkins JobDSL multibranchPipelineJob change script path
Job DSL now exposes a way to do this:
multibranchPipelineJob('my-build') { factory { workflowBranchProjectFactory { scriptPath('path-to-Jenkinsfile') } }}
Confirmed working with Job DSL 1.69, and is available since 1.67 according to the release notes.
Edit: Tested again with Job DSL 1.77 and it's still working as expected. If you want to see the documentation for this syntax you'll have to look at a Jenkins installation that has the Multibranch Pipeline plugin installed, at this path:
https://your-jenkins-url/plugin/job-dsl/api-viewer/index.html#path/multibranchPipelineJob-factory-workflowBranchProjectFactory-scriptPath
As this question still proves popular, to do this in JCasC you can do this
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'() } } }
After a fair amount of googling, I found something that works:
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") }}
This seems to work for me.