Jenkins DSL配置块使标签重复

时间:2019-05-27 07:12:35

标签: jenkins dsl jenkins-job-dsl

我正在尝试创建作业DSL,以创建多分支流水线作业, 作业已成功创建,但是多管道作业中缺少一些配置,因此我尝试使用“配置”块。

确实创建了configure块,但是它创建了 jenkins.branch.BranchSource 的重复“标签”。我想我缺少了一些东西。我尝试了很多操作,但对我没有用。 有什么建议吗?

这是我的普通DSL:

multibranchPipelineJob('TestDocker_pipeline_DSL') {     

    branchSources {
        git {
            remote(gitUrl)
            credentialsId('Dev_Builder_ssh')
            //includes("(V[0-9]+.[0-9]+([.]+[0-9]+)*)|(master)")
        }
        configure {
            it / sources / data / "jenkins.branch.BranchSource" << "jenkins.plugins.git.GitSCMSource"  {
                id("8fd33e1d-07b6-4cc4-8f1c-a18d955b4b6e")
                remote(gitUrl)
                credentialsId('Dev_Builder_ssh')
                traits{
                    "jenkins.scm.impl.trait.RegexSCMHeadFilterTrait"{
                        regex("V[0-9]+.[0-9]+([.]+[0-9]+)*)|(master)")
                    }
                }
            }
        }
    }
    factory {
        workflowBranchProjectFactory {
            scriptPath('main/Docker/DockerJenkinsfileSlave.groovy')
        }
    }
    orphanedItemStrategy {
        discardOldItems {
            numToKeep(3)
        }
    }
}

这是正在创建的作业XML:

enter image description here

1 个答案:

答案 0 :(得分:0)

在经过很多努力之后,我认为我的问题是我没有将某些 TAGS 定义为Groovy DSL中的插件,并删除了“ git ”部分也有帮助。

因此,最终可行的最终方法是:

branchSources {
    configure {
        it / sources / data / "jenkins.branch.BranchSource" <<  source (class: "jenkins.plugins.git.GitSCMSource", plugin:"git@3.9.2")  {
            remote(gitUrl)
            credentialsId('Dev_Builder_ssh')
            includes('*')
            excludes('')
            ignoreOnPushNotifications(false)
            traits{
                "jenkins.scm.impl.trait.RegexSCMHeadFilterTrait"{
                    regex("(V[0-9]+.[0-9]+([.]+[0-9]+)*)|(master)")
                }
            }
        }
    }
}

哪个完成了这个美丽的XML工作:

enter image description here