Jenkins JobDSL multibranchPipelineJob change script path Jenkins JobDSL multibranchPipelineJob change script path jenkins jenkins

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.