Jenkins JobDSL multibranchPipelineJob更改脚本路径

apr*_*985 9 jenkins jenkins-job-dsl jenkins-pipeline multibranch-pipeline

我正在尝试在jobDSL中创建multibranchPipelineJob,但Jenkins文件位于默认的替代位置.我查看了文档https://jenkinsci.github.io/job-dsl-plugin/#path/multibranchPipelineJob ,我看不到这样做的方法.查看config.xml以获取手动创建的multibranchPipelineJob,scriptPath位于该部分中,但我找不到设置此方法的DSL方法.

谁能提供任何帮助,如何做到这一点?干杯

ner*_*erd 14

Job DSL现在提供了一种方法:

multibranchPipelineJob('my-build') {
    factory {
        workflowBranchProjectFactory {
            scriptPath('path-to-Jenkinsfile')
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

确认使用Job DSL 1.69,根据发行说明,自1.67起可用.


apr*_*985 8

由于这个问题仍然很受欢迎,要在 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'()
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

  • 这很有用,但最初对我不起作用,直到我意识到这需要“buildStrategies”部分的“basic-branch-build-strategies”插件才能工作。 (2认同)

kgd*_*ouz 7

经过大量的谷歌搜索,我发现了一些有用的东西:

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")
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎对我有用。