From d1cbde540034bf5f7689d60e5ce8771a909000d9 Mon Sep 17 00:00:00 2001 From: Daniel Spilker Date: Wed, 14 Sep 2016 11:29:42 +0200 Subject: [PATCH] enhanced support for the Exclusion Plugin, deprecated support for older versions [FIXES JENKINS-36683] --- docs/Home.md | 5 +++++ docs/Migration.md | 8 ++++++++ .../wrapper/WrapperContext/exclusionResources.groovy | 2 +- .../jobdsl/dsl/helpers/step/StepContext.groovy | 2 ++ .../jobdsl/dsl/helpers/wrapper/WrapperContext.groovy | 4 +++- .../jobdsl/dsl/helpers/step/StepContextSpec.groovy | 1 + .../dsl/helpers/wrapper/WrapperContextSpec.groovy | 10 ++++++---- 7 files changed, 26 insertions(+), 6 deletions(-) diff --git a/docs/Home.md b/docs/Home.md index 6bdd216b3..9f442feb3 100644 --- a/docs/Home.md +++ b/docs/Home.md @@ -28,6 +28,11 @@ Browse the Jenkins issue tracker to see any [open issues](https://issues.jenkins ## Release Notes * 1.52 (unreleased) * Increased the minimum supported Jenkins version to 1.642 + * Enhanced support for the [Exclusion Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin) + ([JENKINS-36683](https://issues.jenkins-ci.org/browse/JENKINS-36683)) + * Support for the older versions of the + [Exclusion Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin) is deprecated, see + [Migration](Migration#migrating-to-152) * 1.51 (September 13 2016) * Enhanced support for the [RunDeck Plugin](https://wiki.jenkins-ci.org/display/JENKINS/RunDeck+Plugin) ([#885](https://github.com/jenkinsci/job-dsl-plugin/pull/885)) diff --git a/docs/Migration.md b/docs/Migration.md index 54a78d111..fa4c232c0 100644 --- a/docs/Migration.md +++ b/docs/Migration.md @@ -1,3 +1,11 @@ +## Migrating to 1.52 + +### Exclusion + +Support for versions older than 0.12 of the +[Exclusion Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Exclusion-Plugin) is [[deprecated|Deprecation-Policy]] +and will be removed. + ## Migrating to 1.51 ### Rundeck diff --git a/job-dsl-core/src/main/docs/examples/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContext/exclusionResources.groovy b/job-dsl-core/src/main/docs/examples/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContext/exclusionResources.groovy index de2195e8f..b2b497fb1 100644 --- a/job-dsl-core/src/main/docs/examples/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContext/exclusionResources.groovy +++ b/job-dsl-core/src/main/docs/examples/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContext/exclusionResources.groovy @@ -1,6 +1,6 @@ job('example') { wrappers { - exclusionResources('first', 'second') + exclusionResources('FIRST', 'SECOND') } steps { criticalBlock { diff --git a/job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/helpers/step/StepContext.groovy b/job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/helpers/step/StepContext.groovy index 8dd9895e7..15a1edd2e 100644 --- a/job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/helpers/step/StepContext.groovy +++ b/job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/helpers/step/StepContext.groovy @@ -690,6 +690,8 @@ class StepContext extends AbstractExtensibleContext { */ @RequiresPlugin(id = 'Exclusion') void criticalBlock(@DslContext(StepContext) Closure closure) { + jobManagement.logPluginDeprecationWarning('Exclusion', '0.12') + StepContext stepContext = new StepContext(jobManagement, item) ContextHelper.executeInContext(closure, stepContext) diff --git a/job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContext.groovy b/job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContext.groovy index 57d2f0f1a..aa5b24247 100644 --- a/job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContext.groovy +++ b/job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContext.groovy @@ -462,11 +462,13 @@ class WrapperContext extends AbstractExtensibleContext { */ @RequiresPlugin(id = 'Exclusion') void exclusionResources(Iterable resourceNames) { + jobManagement.logPluginDeprecationWarning('Exclusion', '0.12') + wrapperNodes << new NodeBuilder().'org.jvnet.hudson.plugins.exclusion.IdAllocator' { ids { resourceNames.each { String resourceName -> 'org.jvnet.hudson.plugins.exclusion.DefaultIdType' { - name resourceName + name(resourceName.toUpperCase(Locale.ENGLISH)) } } } diff --git a/job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/helpers/step/StepContextSpec.groovy b/job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/helpers/step/StepContextSpec.groovy index 481353034..44f6b2ce9 100644 --- a/job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/helpers/step/StepContextSpec.groovy +++ b/job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/helpers/step/StepContextSpec.groovy @@ -2642,6 +2642,7 @@ class StepContextSpec extends Specification { context.stepNodes[1].name() == 'hudson.tasks.Shell' context.stepNodes[2].name() == 'org.jvnet.hudson.plugins.exclusion.CriticalBlockEnd' 1 * jobManagement.requirePlugin('Exclusion') + 1 * jobManagement.logPluginDeprecationWarning('Exclusion', '0.12') } def 'call rake method'() { diff --git a/job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContextSpec.groovy b/job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContextSpec.groovy index 49adcf883..ac87c443d 100644 --- a/job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContextSpec.groovy +++ b/job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/helpers/wrapper/WrapperContextSpec.groovy @@ -1094,9 +1094,10 @@ class WrapperContextSpec extends Specification { then: with(context.wrapperNodes[0]) { name() == 'org.jvnet.hudson.plugins.exclusion.IdAllocator' - ids[0].'org.jvnet.hudson.plugins.exclusion.DefaultIdType'[0].name[0].value() == 'first' + ids[0].'org.jvnet.hudson.plugins.exclusion.DefaultIdType'[0].name[0].value() == 'FIRST' } (1.._) * mockJobManagement.requirePlugin('Exclusion') + 1 * mockJobManagement.logPluginDeprecationWarning('Exclusion', '0.12') } def 'call exclusion with multiple args'() { @@ -1106,11 +1107,12 @@ class WrapperContextSpec extends Specification { then: with(context.wrapperNodes[0]) { name() == 'org.jvnet.hudson.plugins.exclusion.IdAllocator' - ids[0].'org.jvnet.hudson.plugins.exclusion.DefaultIdType'[0].name[0].value() == 'first' - ids[0].'org.jvnet.hudson.plugins.exclusion.DefaultIdType'[1].name[0].value() == 'second' - ids[0].'org.jvnet.hudson.plugins.exclusion.DefaultIdType'[2].name[0].value() == 'third' + ids[0].'org.jvnet.hudson.plugins.exclusion.DefaultIdType'[0].name[0].value() == 'FIRST' + ids[0].'org.jvnet.hudson.plugins.exclusion.DefaultIdType'[1].name[0].value() == 'SECOND' + ids[0].'org.jvnet.hudson.plugins.exclusion.DefaultIdType'[2].name[0].value() == 'THIRD' } 1 * mockJobManagement.requirePlugin('Exclusion') + 1 * mockJobManagement.logPluginDeprecationWarning('Exclusion', '0.12') } def 'set delivery pipeline version'() {