Jenkins JobDSL multibranchPipelineJob change script path

后端 未结 4 1057
天涯浪人
天涯浪人 2021-02-18 13:04

I am trying to create a multibranchPipelineJob in jobDSL, however the Jenkinsfile is at an alternative location to the default. I have looked through the docs https://jenkinsci

相关标签:
4条回答
  • 2021-02-18 13:41

    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'()
            }
          }
        }
    
    0 讨论(0)
  • 2021-02-18 13:46

    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.

    0 讨论(0)
  • 2021-02-18 13:54

    The setting is a bit hidden, but the Automatically Generated DSL supports setting the script path for a multibranch job:

    multibranchPipelineJob('example') {
      factory {
        workflowMultiBranchProjectFactory {
          scriptPath('my-location/Jenkinsfile')
        }
      }
    } 
    
    0 讨论(0)
  • 2021-02-18 13:58

    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

    0 讨论(0)
提交回复
热议问题