Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nigimaster/9063b5e561ef524980301dcbea095c2f to your computer and use it in GitHub Desktop.
Save nigimaster/9063b5e561ef524980301dcbea095c2f to your computer and use it in GitHub Desktop.
Jenkins Job DSL for a Multi-Branch Pipeline that includes Branch Source Strategy & custom Jenkinsfile script path
// A new UUID must be generated for the first run and re-used for your Job DSL, the plugin updates jobs based on ID
UUID uuid = UUID.fromString("dd847135-8391-4f66-a54c-7f8781dc3119") // generate one @ https://www.uuidgenerator.net
multibranchPipelineJob("my_awesome_job") {
displayName "my awesome job"
description "multi-branch pipeline job thingy"
configure {
it / sources / 'data' / 'jenkins.branch.BranchSource' << {
source(class: 'jenkins.plugins.git.GitSCMSource') {
id(uuid)
remote("git@gitlab:root/repo.git")
credentialsId("ssh_key")
includes('*')
excludes('')
ignoreOnPushNotifications('false')
traits {
'jenkins.plugins.git.traits.BranchDiscoveryTrait'()
}
}
// default strategy when sourcing from a branch
strategy(class: "jenkins.branch.NamedExceptionsBranchPropertyStrategy") {
defaultProperties(class: "java.util.Arrays\$ArrayList") {
a(class: "jenkins.branch.BranchProperty-array") {
// don't trigger builds
"jenkins.branch.NoTriggerBranchProperty"()
}
}
// exceptions to the default strategy
namedExceptions(class: "java.util.Arrays\$ArrayList") {
a(class: "jenkins.branch.NamedExceptionsBranchPropertyStrategy\$Named-array") {
"jenkins.branch.NamedExceptionsBranchPropertyStrategy_-Named"() {
// for the brach named `master` trigger builds
// (this is default behaviour if no branch properties are specified)
props(class: "empty-list")
name("master")
}
}
}
}
}
// customise the branch project factory
it / factory(class: "org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory") << {
// pipeline jobs will have their script path set to `pipelines/customPipeline.groovy`
scriptPath("pipelines/customPipeline.groovy")
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment