In the repository where the future groovy files will be stored, create a directory called "utilities" and create the file "BitbucketMultibranch.groovy" in it with the following contents:
package utilities import javaposse.jobdsl.dsl.DslFactory class BitbucketMultibranch { String name String description String displayName String serverUrl String repoOwner String repository String credentialsId String includeBranches String excludeBranches void build(DslFactory dslFactory) { def job = dslFactory.multibranchPipelineJob(name) { description(description) displayName(displayName) branchSources { branchSource { source { bitbucket { serverUrl(serverUrl) repoOwner(repoOwner) repository(repository) credentialsId(credentialsId) traits { headWildcardFilter { excludes(excludeBranches) includes(includeBranches) } } } } } } configure { def traits = it / sources / data / 'jenkins.branch.BranchSource' / source / traits traits << 'com.cloudbees.jenkins.plugins.bitbucket.BranchDiscoveryTrait' { strategyId(3) // detect all branches } } factory { workflowBranchProjectFactory { scriptPath('.jenkins/Jenkinsfile') } } orphanedItemStrategy { discardOldItems { numToKeep(15) } } } } }
Now, to create an Item, it is enough to create a file with the groovy extension in the root of the repository, so that it can be processed by Seed Job.
artem-dsl.groovy
import utilities.BitbucketMultibranch def multiPipeline = new BitbucketMultibranch( description: 'Just try make world better', name: 'Artem-DSL', displayName: 'Artem-DSL', serverUrl: 'https://git.artem.services', repoOwner: "dev", repository: "artem-dls", credentialsId: 'svc-bitbucket', includeBranches: 'development staging master', excludeBranches: '' ).build(this)
Build for GitHub.
GitHubMultibranch.groovy:
package utilities import javaposse.jobdsl.dsl.DslFactory class GithubMultibranch { String name String description String displayName String repositoryOwner String repositoryName String credentials String includeBranches String excludeBranches void build(DslFactory dslFactory) { def job = dslFactory.multibranchPipelineJob(name) { description(description) displayName(displayName) branchSources { github { scanCredentialsId(credentials) repoOwner(repositoryOwner) repository(repositoryName) includes(includeBranches) excludes(excludeBranches) } } factory { workflowBranchProjectFactory { scriptPath('.jenkins/Jenkinsfile') } } orphanedItemStrategy { discardOldItems { numToKeep(15) } } } } }
artem-github.groovy:
import utilities.GithubMultibranch def multiPipeline = new GithubMultibranch( description: 'Just try make world better', name: 'Github-Test', displayName: 'Github-Test', repositoryOwner: "artem", repositoryName: "dsl-test", credentials: 'artem-github', includeBranches: 'development staging master', excludeBranches: '' ).build(this)
Hi,
But anyhow, I have to create a seed job.
I want a groovy script/python which should create a Multi branch pipeline job automatically without creating even a seed job.
What do you think , is it possible?
Hi!
I used "seed job" as a "heartbeat" my repository with my *.groovy files, and I created it only once, after I just added configs to my repo and "seed job" automatically create jobs.
Maybe I didn’t total understood your question