Search code examples
jenkinsdsljenkins-job-dsl

Jenkins dsl configure block makes duplicate tabs


I'm trying to create a job DSL which creates a multibranch-pipeline job, The job is being created successfully but there are some missing configurations in the multi-pipeline job so I tried to use the "configure" block.

The configure block indeed was created but it created a duplicate "tag" of jenkins.branch.BranchSource I guess I am missing something' I tried tons of manipulations but nothing worked for me. Any advice?

This is my groovy 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)
        }
    }
}

And this is the job XML being created:

enter image description here


Solution

  • Well After a lot of struggling I think that my problem was that I didn't define some of the TAGS as plugins in the groovy DSL and removing the "git" section also helped.

    So the Final groovy that finally worked was this one:

    branchSources {
        configure {
            it / sources / data / "jenkins.branch.BranchSource" <<  source (class: "jenkins.plugins.git.GitSCMSource", plugin:"[email protected]")  {
                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)")
                    }
                }
            }
        }
    }
    

    Which resulted this beutifull XML job:

    enter image description here