Forked from djfdyuruiry/multi_brach_dsl_with_custom_strategy_and_script_path.groovy
Created
July 5, 2019 14:17
-
-
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
This file contains 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
// 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