Jenkins JobDSL multibranchPipelineJob 更改脚本路径
Jenkins JobDSL multibranchPipelineJob change script path
我正在尝试在 jobDSL 中创建一个 multibranchPipelineJob,但是 Jenkinsfile 位于默认位置的替代位置。
我查看了文档 https://jenkinsci.github.io/job-dsl-plugin/#path/multibranchPipelineJob
我看不出有办法做到这一点。
查看手动创建的 multibranchPipelineJob 的 config.xml,scriptPath 在该部分中,但我找不到 DSL 方法来设置它。
任何人都可以提供有关如何执行此操作的帮助吗?
干杯
设置有点隐藏,但是Automatically Generated DSL支持设置多分支作业的脚本路径:
multibranchPipelineJob('example') {
factory {
workflowMultiBranchProjectFactory {
scriptPath('my-location/Jenkinsfile')
}
}
}
经过大量谷歌搜索后,我发现了一些有用的东西:
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")
}
}
这似乎对我有用。
Job DSL 现在公开了一种执行此操作的方法:
multibranchPipelineJob('my-build') {
factory {
workflowBranchProjectFactory {
scriptPath('path-to-Jenkinsfile')
}
}
}
已确认使用 Job DSL 1.69,根据发行说明,自 1.67 起可用。
编辑: 使用 Job DSL 1.77 再次测试,它仍然按预期工作。如果您想查看此语法的文档,您必须查看安装了 Multibranch Pipeline 插件的 Jenkins 安装,路径如下:
https:///your-jenkins-url/plugin/job-dsl/api-viewer/index.html#path/multibranchPipelineJob-factory-workflowBranchProjectFactory-scriptPath
由于这个问题仍然很受欢迎,要在 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'()
}
}
}
我正在尝试在 jobDSL 中创建一个 multibranchPipelineJob,但是 Jenkinsfile 位于默认位置的替代位置。 我查看了文档 https://jenkinsci.github.io/job-dsl-plugin/#path/multibranchPipelineJob 我看不出有办法做到这一点。 查看手动创建的 multibranchPipelineJob 的 config.xml,scriptPath 在该部分中,但我找不到 DSL 方法来设置它。
任何人都可以提供有关如何执行此操作的帮助吗? 干杯
设置有点隐藏,但是Automatically Generated DSL支持设置多分支作业的脚本路径:
multibranchPipelineJob('example') {
factory {
workflowMultiBranchProjectFactory {
scriptPath('my-location/Jenkinsfile')
}
}
}
经过大量谷歌搜索后,我发现了一些有用的东西:
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")
}
}
这似乎对我有用。
Job DSL 现在公开了一种执行此操作的方法:
multibranchPipelineJob('my-build') {
factory {
workflowBranchProjectFactory {
scriptPath('path-to-Jenkinsfile')
}
}
}
已确认使用 Job DSL 1.69,根据发行说明,自 1.67 起可用。
编辑: 使用 Job DSL 1.77 再次测试,它仍然按预期工作。如果您想查看此语法的文档,您必须查看安装了 Multibranch Pipeline 插件的 Jenkins 安装,路径如下:
https:///your-jenkins-url/plugin/job-dsl/api-viewer/index.html#path/multibranchPipelineJob-factory-workflowBranchProjectFactory-scriptPath
由于这个问题仍然很受欢迎,要在 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'()
}
}
}