Forked from djfdyuruiry/multi_brach_dsl_with_custom_strategy_and_script_path.groovy
Created
May 11, 2018 23:59
-
-
Save ctran/01eac093ac12def1b3ffbcedf07bf30a 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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
UUID uuid = UUID.randomUUID() | |
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