From 11165ebec0616935dae61897f2a39ff5fa81eef9 Mon Sep 17 00:00:00 2001 From: Gary Hale Date: Wed, 4 Mar 2015 11:29:49 -0500 Subject: [PATCH] Updating job-dsl-core support to 1.34 and freshening versions of other libraries --- build.gradle | 45 +++++++------- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 45502 -> 52141 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 6 +- .../plugins/jenkins/dsl/JobDSLSupport.groovy | 13 +++- .../plugins/jenkins/dsl/ViewDSLSupport.groovy | 26 ++++---- .../jenkins/jobdsl/DSLJobFactory.groovy | 9 +++ .../plugins/jenkins/jobdsl/DSLJobType.groovy | 24 ++++++++ .../jenkins/jobdsl/DSLViewFactory.groovy | 9 +++ .../plugins/jenkins/jobdsl/DSLViewType.groovy | 22 +++++++ .../jobdsl/DefaultDSLJobFactory.groovy | 18 ++++++ .../jobdsl/DefaultDSLViewFactory.groovy | 18 ++++++ .../jenkins/jobdsl/MapJobManagement.groovy | 58 +++++++++++++++++- .../jenkins/test/dsl/JenkinsViewTest.groovy | 4 +- .../jenkins/test/dsl/JobFixtures.groovy | 1 - 16 files changed, 212 insertions(+), 47 deletions(-) create mode 100644 src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLJobFactory.groovy create mode 100644 src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLJobType.groovy create mode 100644 src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLViewFactory.groovy create mode 100644 src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLViewType.groovy create mode 100644 src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DefaultDSLJobFactory.groovy create mode 100644 src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DefaultDSLViewFactory.groovy diff --git a/build.gradle b/build.gradle index bda203e..9213837 100644 --- a/build.gradle +++ b/build.gradle @@ -4,15 +4,18 @@ buildscript { maven { url 'http://repo.jenkins-ci.org/releases/' } + maven { + url "https://plugins.gradle.org/m2/" + } } dependencies { classpath 'org.gradle.api.plugins:gradle-nexus-plugin:0.7' - classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:0.5' + classpath "com.gradle.publish:plugin-publish-plugin:0.9.0" } } -apply plugin: 'com.jfrog.bintray' +apply plugin: "com.gradle.plugin-publish" apply plugin: 'groovy' apply plugin: 'eclipse' apply plugin: 'idea' @@ -45,10 +48,12 @@ dependencies { 'org.apache.ivy:ivy:2.2.0' ) - compile('org.codehaus.groovy.modules.http-builder:http-builder:0.5.2') { + compile('org.codehaus.groovy.modules.http-builder:http-builder:0.6') { exclude(module: 'groovy') + exclude(module: 'xercesImpl') } - compile('org.jenkins-ci.plugins:job-dsl-core:1.26') { + + compile('org.jenkins-ci.plugins:job-dsl-core:1.34') { exclude(module: 'groovy-all') } @@ -87,6 +92,10 @@ task wrapper(type: Wrapper) { gradleVersion = '1.12' } +nexus { + sign = false +} + modifyPom { project { name 'gradle-jenkins-plugin' @@ -118,23 +127,17 @@ modifyPom { } } -bintray { - user = project.hasProperty('bintrayUsername') ? project.getProperty('bintrayUsername') : '' - key = project.hasProperty('bintrayApiKey') ? project.getProperty('bintrayApiKey') : '' - - configurations = ['archives'] - - pkg { - repo = 'gradle-plugins' - name = 'gradle-jenkins-plugin' - licenses = ['Apache-2.0'] - desc = 'A Gradle plugin for programmatically managing Jenkins instances.' - websiteUrl = 'https://github.com/ghale/gradle-jenkins-plugin' - issueTrackerUrl = 'https://github.com/ghale/gradle-jenkins-plugin/issues' - vcsUrl = 'https://github.com/ghale/gradle-jenkins-plugin.git' - labels = ['jenkins', 'gradle'] - publicDownloadNumbers = true - version.attributes = ['gradle-plugin': 'com.terrafolio.jenkins:com.terrafolio:gradle-jenkins-plugin'] +pluginBundle { + website = 'https://github.com/ghale/gradle-jenkins-plugin' + vcsUrl = 'https://github.com/ghale/gradle-jenkins-plugin' + description = 'A Gradle plugin for programmatically managing Jenkins instances.' + tags = ['jenkins', 'gradle'] + + plugins { + jenkins { + id = 'com.terrafolio.jenkins' + displayName = 'Gradle Jenkins plugin' + } } } diff --git a/gradle.properties b/gradle.properties index 471f915..3d989a7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -version=1.2.3 +version=1.3.0 group=com.terrafolio diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 7f1e239c8466c730b569575c494a89e6bb4c416a..085a1cdc27db1185342f15a00441734e74fe3735 100644 GIT binary patch delta 46263 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 z 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�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

K{@mtVHX}Z5VHrJ= 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

  • 7=|YcEkM=}9M4aIUjXH6PI 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c1f5059..e14c8a5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sun Jun 29 12:09:34 EDT 2014 +#Thu Apr 02 11:30:33 EDT 2015 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-1.12-bin.zip diff --git a/gradlew b/gradlew index e61422d..91a7e26 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash ############################################################################## ## @@ -61,9 +61,9 @@ while [ -h "$PRG" ] ; do fi done SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" +cd "`dirname \"$PRG\"`/" >&- APP_HOME="`pwd -P`" -cd "$SAVED" +cd "$SAVED" >&- CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar diff --git a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/dsl/JobDSLSupport.groovy b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/dsl/JobDSLSupport.groovy index 99a3684..c84b40c 100644 --- a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/dsl/JobDSLSupport.groovy +++ b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/dsl/JobDSLSupport.groovy @@ -1,15 +1,24 @@ package com.terrafolio.gradle.plugins.jenkins.dsl +import com.terrafolio.gradle.plugins.jenkins.jobdsl.DSLJobFactory +import com.terrafolio.gradle.plugins.jenkins.jobdsl.DefaultDSLJobFactory import javaposse.jobdsl.dsl.* /** * Created by ghale on 6/2/14. */ class JobDSLSupport implements DSLSupport { - def JobManagement jobManagement + JobManagement jobManagement + DSLJobFactory jobFactory JobDSLSupport(JobManagement jobManagement) { this.jobManagement = jobManagement + this.jobFactory = new DefaultDSLJobFactory() + } + + JobDSLSupport(JobManagement jobManagement, DSLJobFactory jobFactory) { + this.jobManagement = jobManagement + this.jobFactory = jobFactory } @Override @@ -27,7 +36,7 @@ class JobDSLSupport implements DSLSupport { @Override def String evaluateDSL(String name, String type, Closure closure) { - def Job job = new Job(jobManagement, ['type': type]) + def Job job = jobFactory.create(jobManagement, type) // Load the existing xml as a template if it exists if (jobManagement.getConfig(name) && job.templateName == null) { job.using(name) diff --git a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/dsl/ViewDSLSupport.groovy b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/dsl/ViewDSLSupport.groovy index d9afd12..3f332a7 100644 --- a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/dsl/ViewDSLSupport.groovy +++ b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/dsl/ViewDSLSupport.groovy @@ -1,27 +1,24 @@ package com.terrafolio.gradle.plugins.jenkins.dsl +import com.terrafolio.gradle.plugins.jenkins.jobdsl.DSLViewFactory +import com.terrafolio.gradle.plugins.jenkins.jobdsl.DefaultDSLViewFactory import javaposse.jobdsl.dsl.* -import javaposse.jobdsl.dsl.views.BuildPipelineView -import javaposse.jobdsl.dsl.views.ListView -import javaposse.jobdsl.dsl.views.NestedView -import javaposse.jobdsl.dsl.views.SectionedView /** * Created by ghale on 6/2/14. */ class ViewDSLSupport implements DSLSupport { - def JobManagement jobManagement - - private static final Map> VIEW_TYPE_MAPPING = [ - (null) : ListView.class, - (ViewType.ListView) : ListView.class, - (ViewType.NestedView) : NestedView.class, - (ViewType.SectionedView) : SectionedView.class, - (ViewType.BuildPipelineView): BuildPipelineView.class, - ] + JobManagement jobManagement + DSLViewFactory viewFactory ViewDSLSupport(JobManagement jobManagement) { this.jobManagement = jobManagement + this.viewFactory = new DefaultDSLViewFactory() + } + + ViewDSLSupport(JobManagement jobManagement, DSLViewFactory viewFactory) { + this.jobManagement = jobManagement + this.viewFactory = viewFactory } @Override @@ -39,8 +36,7 @@ class ViewDSLSupport implements DSLSupport { @Override String evaluateDSL(String name, String type, Closure closure) { - Class viewClass = VIEW_TYPE_MAPPING[type as ViewType] - View view = viewClass.newInstance() + View view = viewFactory.createView(jobManagement, type) view.with(closure) jobManagement.createOrUpdateView(name, view.xml, true) return name diff --git a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLJobFactory.groovy b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLJobFactory.groovy new file mode 100644 index 0000000..708827f --- /dev/null +++ b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLJobFactory.groovy @@ -0,0 +1,9 @@ +package com.terrafolio.gradle.plugins.jenkins.jobdsl + +import javaposse.jobdsl.dsl.Job +import javaposse.jobdsl.dsl.JobManagement + + +interface DSLJobFactory { + Job create(JobManagement management, String type) +} diff --git a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLJobType.groovy b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLJobType.groovy new file mode 100644 index 0000000..3a95d14 --- /dev/null +++ b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLJobType.groovy @@ -0,0 +1,24 @@ +package com.terrafolio.gradle.plugins.jenkins.jobdsl + +import javaposse.jobdsl.dsl.Job +import javaposse.jobdsl.dsl.jobs.* + + +enum DSLJobType { + Freeform(FreeStyleJob), + Maven(MavenJob), + Multijob(MultiJob), + BuildFlow(BuildFlowJob), + Workflow(WorkflowJob), + Matrix(MatrixJob) + + final Class jobClass + + DSLJobType(Class jobClass) { + this.jobClass = jobClass + } + + static find(String enumName) { + values().find { it.name().toLowerCase() == enumName.toLowerCase() } + } +} \ No newline at end of file diff --git a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLViewFactory.groovy b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLViewFactory.groovy new file mode 100644 index 0000000..9a27f66 --- /dev/null +++ b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLViewFactory.groovy @@ -0,0 +1,9 @@ +package com.terrafolio.gradle.plugins.jenkins.jobdsl + +import javaposse.jobdsl.dsl.JobManagement +import javaposse.jobdsl.dsl.View + + +interface DSLViewFactory { + View createView(JobManagement management, String type) +} \ No newline at end of file diff --git a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLViewType.groovy b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLViewType.groovy new file mode 100644 index 0000000..2dba7a5 --- /dev/null +++ b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DSLViewType.groovy @@ -0,0 +1,22 @@ +package com.terrafolio.gradle.plugins.jenkins.jobdsl + +import javaposse.jobdsl.dsl.View + +enum DSLViewType { + ListView(javaposse.jobdsl.dsl.views.ListView), + SectionedView(javaposse.jobdsl.dsl.views.SectionedView), + NestedView(javaposse.jobdsl.dsl.views.NestedView), + DeliveryPipelineView(javaposse.jobdsl.dsl.views.DeliveryPipelineView), + BuildPipelineView(javaposse.jobdsl.dsl.views.BuildPipelineView), + BuildMonitorView(javaposse.jobdsl.dsl.views.BuildMonitorView) + + final Class viewClass + + DSLViewType(Class viewClass) { + this.viewClass = viewClass + } + + static find(String enumName) { + values().find { it.name().toLowerCase() == enumName.toLowerCase() } + } +} \ No newline at end of file diff --git a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DefaultDSLJobFactory.groovy b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DefaultDSLJobFactory.groovy new file mode 100644 index 0000000..300f1da --- /dev/null +++ b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DefaultDSLJobFactory.groovy @@ -0,0 +1,18 @@ +package com.terrafolio.gradle.plugins.jenkins.jobdsl + +import javaposse.jobdsl.dsl.Job +import javaposse.jobdsl.dsl.JobManagement + +class DefaultDSLJobFactory implements DSLJobFactory { + @Override + Job create(JobManagement management, String type) { + Class jobClass + if (type == null) { + jobClass = DSLJobType.Freeform.jobClass + } else { + jobClass = DSLJobType.find(type).jobClass + } + + return jobClass.newInstance(management) + } +} diff --git a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DefaultDSLViewFactory.groovy b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DefaultDSLViewFactory.groovy new file mode 100644 index 0000000..0b9f3ed --- /dev/null +++ b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/DefaultDSLViewFactory.groovy @@ -0,0 +1,18 @@ +package com.terrafolio.gradle.plugins.jenkins.jobdsl + +import javaposse.jobdsl.dsl.JobManagement +import javaposse.jobdsl.dsl.View + +class DefaultDSLViewFactory implements DSLViewFactory { + @Override + View createView(JobManagement management, String type) { + Class viewClass + if (type == null) { + viewClass = DSLViewType.ListView.viewClass + } else { + viewClass = DSLViewType.find(type).viewClass + } + + return viewClass.newInstance(management) + } +} diff --git a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/MapJobManagement.groovy b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/MapJobManagement.groovy index 5e2ca31..9a5fa14 100644 --- a/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/MapJobManagement.groovy +++ b/src/main/groovy/com/terrafolio/gradle/plugins/jenkins/jobdsl/MapJobManagement.groovy @@ -5,9 +5,12 @@ import javaposse.jobdsl.dsl.AbstractJobManagement import javaposse.jobdsl.dsl.ConfigFile import javaposse.jobdsl.dsl.ConfigFileType import javaposse.jobdsl.dsl.ConfigurationMissingException +import javaposse.jobdsl.dsl.Item import javaposse.jobdsl.dsl.JobConfigurationNotFoundException import javaposse.jobdsl.dsl.NameNotProvidedException import hudson.util.VersionNumber +import javaposse.jobdsl.dsl.UserContent +import javaposse.jobdsl.dsl.helpers.ExtensibleContext /** * Created by ghale on 4/6/14. @@ -17,8 +20,8 @@ class MapJobManagement extends AbstractJobManagement { Map parameters MapJobManagement(Map map, PrintStream out = System.out) { + super(out) this.map = map - this.out = out parameters = new Maps().newHashMap() } @@ -67,4 +70,57 @@ class MapJobManagement extends AbstractJobManagement { String getConfigFileId(ConfigFileType type, String name){ return null } + + @Override + void renameJobMatching(String previousNames, String destination) throws IOException { + } + + @Override + boolean createOrUpdateConfig(Item item, boolean ignoreExisting) throws NameNotProvidedException { + String jobName = item.name + String config = item.xml + return createOrUpdateConfig(jobName, config, ignoreExisting) + } + + @Override + void createOrUpdateUserContent(UserContent userContent, boolean ignoreExisting) { } + + @Override + void queueJob(String jobName) throws NameNotProvidedException { } + + @Override + InputStream streamFileInWorkspace(String filePath) throws IOException { + return null + } + + @Override + String readFileInWorkspace(String filePath) throws IOException { + return null + } + + @Override + String readFileInWorkspace(String jobName, String filePath) throws IOException { + return null + } + + @Override + void requirePlugin(String pluginShortName) { } + + @Override + void requireMinimumCoreVersion(String version) { } + + @Override + VersionNumber getJenkinsVersion() { + return null + } + + @Override + Set getPermissions(String authorizationMatrixPropertyClassName) { + return null + } + + @Override + Node callExtension(String name, Item item, Class contextType, Object... args) { + return null + } } diff --git a/src/test/groovy/com/terrafolio/gradle/plugins/jenkins/test/dsl/JenkinsViewTest.groovy b/src/test/groovy/com/terrafolio/gradle/plugins/jenkins/test/dsl/JenkinsViewTest.groovy index d2cadf4..7155fde 100644 --- a/src/test/groovy/com/terrafolio/gradle/plugins/jenkins/test/dsl/JenkinsViewTest.groovy +++ b/src/test/groovy/com/terrafolio/gradle/plugins/jenkins/test/dsl/JenkinsViewTest.groovy @@ -4,6 +4,7 @@ import com.terrafolio.gradle.plugins.jenkins.dsl.JenkinsConfigurationException import nebula.test.ProjectSpec import org.custommonkey.xmlunit.Diff import org.custommonkey.xmlunit.XMLUnit +import spock.lang.Unroll /** * Created by ghale on 4/11/14. @@ -14,7 +15,8 @@ class JenkinsViewTest extends ProjectSpec { project.apply plugin: 'com.terrafolio.jenkins' } - def "configure with dsl closure generates correct xml" () { + @Unroll + def "configure with dsl closure generates correct xml for #viewType" () { setup: XMLUnit.setIgnoreWhitespace(true) diff --git a/src/test/groovy/com/terrafolio/gradle/plugins/jenkins/test/dsl/JobFixtures.groovy b/src/test/groovy/com/terrafolio/gradle/plugins/jenkins/test/dsl/JobFixtures.groovy index ae3d4b2..bcd142f 100644 --- a/src/test/groovy/com/terrafolio/gradle/plugins/jenkins/test/dsl/JobFixtures.groovy +++ b/src/test/groovy/com/terrafolio/gradle/plugins/jenkins/test/dsl/JobFixtures.groovy @@ -37,7 +37,6 @@ class JobFixtures { false true false - false true false false