Groovy ConfigSlurper.parse question mostly

2,655 views
Skip to first unread message

James Levinson

unread,
Jun 13, 2013, 11:59:27 PM6/13/13
to job-dsl...@googlegroups.com
Not sure where to post this...probably more of a groovy question, but...using groovy 2.1.4, job-dsl-plugin-1.15, jenkins-1.480.3.1...Only when running in jenkins, I see a "No signature of methodConfigSlurper.parse(Script,URL) even though that is what I am passing in, I believe. I can run from the command line and it works. This is the expanded code

        ConfigObject getConfigs() {

               File file=new File("${workspace}/conf/properties.groovy");

               URI uri=null;

               uri=file.toURI();

               new ConfigSlurper().parse(uri.toURL())

       }


And this is the output from jenkins.

Started by user james.levinson
[EnvInject] - Loading node environment variables.
Building in workspace /var/lib/jenkins/jobs/distribute_stage_job.seed/workspace
FATAL
: No signature of method: groovy.util.ConfigSlurper.parse() is applicable for argument types: (script1371181474971721923083, java.net.URL) values: [script1371181474971721923083@5d4390ac, file:/var/lib/jenkins/jobs/distribute_stage_job.seed/workspace/conf/properties.groovy]
Possible solutions: parse(java.net.URL), parse(groovy.lang.Script, java.net.URL), parse(groovy.lang.Script), parse(java.lang.Class), parse(java.lang.String), parse(java.util.Properties)
groovy
.lang.MissingMethodException: No signature of method: groovy.util.ConfigSlurper.parse() is applicable for argument types: (script1371181474971721923083, java.net.URL) values: [script1371181474971721923083@5d4390ac, file:/var/lib/jenkins/jobs/distribute_stage_job.seed/workspace/conf/properties.groovy]
Possible solutions: parse(java.net.URL), parse(groovy.lang.Script, java.net.URL), parse(groovy.lang.Script), parse(java.lang.Class), parse(java.lang.String), parse(java.util.Properties)
        at org
.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55)
        at org
.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:78)
        at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:145)
        at groovy
.util.ConfigSlurper.parse(ConfigSlurper.groovy:148)
        at groovy
.util.ConfigSlurper$parse.call(Unknown Source)
        at org
.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
        at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at conf
.Config.getConfigs(Config.groovy:23)
        at conf
.Config.<init>(Config.groovy:16)
        at sun
.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun
.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun
.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java
.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org
.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
        at org
.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:71)
        at org
.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:81)
        at org
.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:54)
        at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
        at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:190)
        at distribute_stage_job
.dsl.run(distribute_stage_job.dsl.groovy:21)
        at javaposse
.jobdsl.dsl.DslScriptLoader.runDslEngine(DslScriptLoader.java:59)
        at javaposse
.jobdsl.plugin.ExecuteDslScripts.perform(ExecuteDslScripts.java:158)
        at hudson
.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
        at hudson
.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:718)
        at hudson
.model.Build$BuildExecution.build(Build.java:199)
        at hudson
.model.Build$BuildExecution.doRun(Build.java:160)
        at hudson
.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:500)
        at hudson
.model.Run.execute(Run.java:1502)
        at hudson
.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
        at hudson
.model.ResourceController.execute(ResourceController.java:88)
        at hudson
.model.Executor.run(Executor.java:237)

I'd be happy to learn any debugging techniques when running within jenkins to figure this out. Thanks.

James Levinson

unread,
Jun 14, 2013, 5:51:41 PM6/14/13
to job-dsl...@googlegroups.com
This has to be a bug in job-dsl, I think. Can one of you experts put a properties file on your disk and try this code in an "Execute Groovy Script" Build block and then try it in a Process Job DSLs Build block.

Because, a) the following code executes fine in the jenkins script console and b) it executes fine in a groovy build step. But if I paste it into the "Use the provided DSL script" box it barfs with the same exception. It sure looks like script1371181474971721923083 is not actually being cast to a groovy.lang.Script, maybe ? My code uses parse(java.net.URL) and then the DSL turns my code/script into parse(groovy.lang.Script, java.net.URL), but it's unrecognized.

File file=new File("/var/lib/jenkins/jobs/distribute_stage_job.seed/workspace/conf/properties.groovy")

URI uri=null;

uri=file.toURI();

slurper = new ConfigSlurper().parse(uri.toURL())
println slurper



James Levinson

unread,
Jun 18, 2013, 8:26:10 PM6/18/13
to job-dsl...@googlegroups.com
Attempting the longest thread by a single person ever...

I looked at the source code and it's possible that javaposse.jobdsl.dsl.DslScriptLoader.runDslEngine() is passing the script as a javaposse.jobdsl.dsl.ScriptRequest and not a java.lang.Script.

I am not really sure how to debug/set a breakpoint using eclipse and jenkins at the same time. 

Am I attempting to run some groovy through the DSL that should not be attempted?

James Levinson

unread,
Jun 21, 2013, 5:32:00 PM6/21/13
to job-dsl...@googlegroups.com
Continuing to discuss this with myself; I have now done some stripped down testing and I have found that my ability to use ConfigSlurper.parse(url) in my scripts broke in between versions 1.14 & 1.15 https://github.com/jenkinsci/job-dsl-plugin/compare/job-dsl-1.14...job-dsl-1.15.

I devised a very simple test.
  1. create a freestyle job
  2. run it, which created a workspace dir
  3. on disk, cd into this workspace dir
  4. create a test.dsl.groovy file & a properties.groovy file in the workspace root
//test.dsl.groovy
URI uri=new File("${workspace}/properties.groovy").toURI();
configs = new ConfigSlurper().parse( uri.toURL() )

println configs.inspect()
println configs.jobs.mongo.email

//properties.groovy
jobs {
mongo { email="ds-...@nimrod.com"    }

5. in the jobs configuration, Inject a workspace environment variable into the build section, like workspace=${the_path_to_your_workspace}/workspace 



6. Run it.
  • If you use job-dsl-1.14, it succeeds and prints "ds-...@nimrod.com"
  • If you use job-dsl-1.15 or 1.16-SNAP, it fails with the stacktrace seen above, groovy.lang.MissingMethodException: No signature of method: groovy.util.ConfigSlurper.parse() is applicable for argument types: (script1371181474971721923083, java.net.URL)
Now, I realize that there is not even any DSL script in this example and it's just a groovy snippet, but it was working and now it's not. I am hoping one of the experts can look through the changelist and find something. Thanks All.

Andrew Harmel-Law

unread,
Jun 24, 2013, 2:49:38 AM6/24/13
to job-dsl...@googlegroups.com
Hi James,

Apologies that I've not managed to get in on this (I've tried a few times, but I'm always behind your own progress).  I do however want to thank you for working through this in public - it's a great help to other users of the DSL who will come behind you.  I'm still trying to take a proper look at this for you (and I'm sure others are too).  We'll see if we can get to the bottom of it. It is only code after all :P

Thanks again.

Cheers, Andrew

--
You received this message because you are subscribed to the Google Groups "job-dsl-plugin" group.
To unsubscribe from this group and stop receiving emails from it, send an email to job-dsl-plugi...@googlegroups.com.
To post to this group, send email to job-dsl...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/job-dsl-plugin/653fd5b8-8798-43fe-967b-6fbc3e3fd225%40googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.
 
 

James Levinson

unread,
Jun 24, 2013, 2:57:36 PM6/24/13
to job-dsl...@googlegroups.com
Thanks Andrew. No worries. I usually add some snark into my posts to keep things interesting.

Andrew Harmel-Law

unread,
Jun 24, 2013, 3:05:27 PM6/24/13
to job-dsl...@googlegroups.com
:D  I'm still trying to catch up.  Maybe I'll get there one day...
On 24 June 2013 19:57, James Levinson <james.l...@opower.com> wrote:
Thanks Andrew. No worries. I usually add some snark into my posts to keep things interesting.

--
You received this message because you are subscribed to the Google Groups "job-dsl-plugin" group.
To unsubscribe from this group and stop receiving emails from it, send an email to job-dsl-plugi...@googlegroups.com.
To post to this group, send email to job-dsl...@googlegroups.com.

Justin Ryan

unread,
Jun 25, 2013, 8:27:30 PM6/25/13
to job-dsl-plugin
I'll try to jump in. The original error says that there isn't a method with those args. So, let's look at the groovy docs:


Ok, it exists, though there's no record of when it was added, but we'll just assume that it was around in 1.8.5 (what Jenkins is running). So I tried it with your above example. I had to change workspace to WORKSPACE and add a "}" to the .groovy file. It then printed:

Building on master in workspace /Users/jryan/Projects/Roundup/jenkins-job-dsl/work/jobs/SEED-test/workspace
['jobs':['mongo':['email':'ds-...@nimrod.com']]]
ds-...@nimrod.com

So, it looks like it's working fine. With the new support you can now readFromWorkspace command:

//test.dsl.groovy
String props = readFileFromWorkspace("properties.groovy")
configs = new ConfigSlurper().parse( props )


That will elminate any issues you have with the plugin running on a slave instead of the master. I'm not sure why you had problems with 1.15, but what's in master is working fine, that much I can confirm. I hope that helps.

On Mon, Jun 24, 2013 at 11:57 AM, James Levinson <james.l...@opower.com> wrote:
Thanks Andrew. No worries. I usually add some snark into my posts to keep things interesting.

--
You received this message because you are subscribed to the Google Groups "job-dsl-plugin" group.
To unsubscribe from this group and stop receiving emails from it, send an email to job-dsl-plugi...@googlegroups.com.
To post to this group, send email to job-dsl...@googlegroups.com.

James Levinson

unread,
Jun 26, 2013, 5:59:56 PM6/26/13
to job-dsl...@googlegroups.com
Thanks for trying it. Not sure why, but I am still getting the same thing, both locally and on a hosted internal instance. Baffling. I run it on .14, it's fine. I upgrade to .15 and not fine. I tried different groovy's, too. Since I don't really know how to debug all these working components together yet, the only change I can guess at that might affect this was: Run.java     But if you say "these are not the droids you are looking for" here, I believe you.


--
You received this message because you are subscribed to a topic in the Google Groups "job-dsl-plugin" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/job-dsl-plugin/GmIZ1q4uDj8/unsubscribe.
To unsubscribe from this group and all its topics, send an email to job-dsl-plugi...@googlegroups.com.

To post to this group, send email to job-dsl...@googlegroups.com.

For more options, visit https://groups.google.com/groups/opt_out.
 
 



--

James Levinson


Senior Release Engineer


We’re hiring! See jobs here

James Levinson

unread,
Jul 23, 2013, 8:57:02 PM7/23/13
to job-dsl...@googlegroups.com
Hi, I'm still banging my head against the wall on this and I was just wondering if you actually created a jenkins job and ran it or used the power-move run locally technique? Because, it does work for me using that technique. It only does not work when run through jenkins.

jameslevinson:~/workspace-git/job-dsl-plugin [git: master] $ ./gradlew :job-dsl-core:oneJar
:job-dsl-core:compileJava UP-TO-DATE
:job-dsl-core:compileGroovy UP-TO-DATE
:job-dsl-core:processResources UP-TO-DATE
:job-dsl-core:classes UP-TO-DATE
:job-dsl-core:jar UP-TO-DATE
:job-dsl-core:oneJar UP-TO-DATE

BUILD SUCCESSFUL

Total time: 4.897 secs
jameslevinson:~/workspace-git/job-dsl-plugin [git: master] $ DSL_JAR=$(find job-dsl-core -name '*standalone.jar'|tail -1)
jameslevinson:~/workspace-git/job-dsl-plugin [git: master] $ echo $DSL_JAR
job-dsl-core/build/libs/job-dsl-core-1.16-SNAPSHOT-standalone.jar
jameslevinson:~/workspace-git/job-dsl-plugin [git: master] $ java -jar $DSL_JAR work/jobs/strip_it_down/workspace/test.dsl.groovy 
[Boot] INFO:  setProperties(com.simontuffs.onejar.JarClassLoader@5e228a02)
[Boot] INFO:  using JarClassLoader: com.simontuffs.onejar.JarClassLoader
[JarClassLoader] INFO:  findResource() found: "META-INF/dgminfo" for caller null in codebase lib/groovy-all-1.8.6.jar
[JarClassLoader] INFO:  findResources(META-INF/services/org.codehaus.groovy.source.Extensions)
[JarClassLoader] INFO:  findResources: looking in [lib/guava-14.0.1.jar, lib/groovy-all-1.8.6.jar, lib/commons-codec-1.8.jar, main/main.jar, lib/slf4j-simple-1.4.3.jar, lib/ivy-2.2.0.jar, lib/slf4j-api-1.4.3.jar, /, lib/xmlunit-1.4.jar]
[JarClassLoader] INFO:  findResources(): Adding jar:file:/job-dsl-core/build/libs/job-dsl-core-1.16-SNAPSHOT-standalone.jar!/lib/groovy-all-1.8.6.jar!/META-INF/services/org.codehaus.groovy.source.Extensions to resources list.
[JarClassLoader] INFO:  findResources(META-INF/services/org.codehaus.groovy.transform.ASTTransformation)
[JarClassLoader] INFO:  findResources: looking in [lib/guava-14.0.1.jar, lib/groovy-all-1.8.6.jar, lib/commons-codec-1.8.jar, main/main.jar, lib/slf4j-simple-1.4.3.jar, lib/ivy-2.2.0.jar, lib/slf4j-api-1.4.3.jar, /, lib/xmlunit-1.4.jar]
[JarClassLoader] INFO:  findResources(): Adding jar:file:/job-dsl-core/build/libs/job-dsl-core-1.16-SNAPSHOT-standalone.jar!/lib/groovy-all-1.8.6.jar!/META-INF/services/org.codehaus.groovy.transform.ASTTransformation to resources list.
[JarClassLoader] INFO:  findResource(): unable to locate "java/lang/javaposse$jobdsl$dsl$helpers$Permissions.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/io/javaposse$jobdsl$dsl$helpers$Permissions.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/net/javaposse$jobdsl$dsl$helpers$Permissions.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/util/javaposse$jobdsl$dsl$helpers$Permissions.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/lang/javaposse$jobdsl$dsl$helpers$Permissions.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/util/javaposse$jobdsl$dsl$helpers$Permissions.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse$jobdsl$dsl$helpers$Permissions.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl$dsl$helpers$Permissions.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl$helpers$Permissions.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl/helpers$Permissions.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl/helpers/Permissions.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/lang/javaposse$jobdsl$dsl$JobType.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/io/javaposse$jobdsl$dsl$JobType.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/net/javaposse$jobdsl$dsl$JobType.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/util/javaposse$jobdsl$dsl$JobType.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/lang/javaposse$jobdsl$dsl$JobType.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/util/javaposse$jobdsl$dsl$JobType.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse$jobdsl$dsl$JobType.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl$dsl$JobType.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl$JobType.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl/JobType.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/lang/javaposse$jobdsl$dsl$JobType$javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/io/javaposse$jobdsl$dsl$JobType$javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/net/javaposse$jobdsl$dsl$JobType$javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/util/javaposse$jobdsl$dsl$JobType$javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/lang/javaposse$jobdsl$dsl$JobType$javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/util/javaposse$jobdsl$dsl$JobType$javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse$jobdsl$dsl$JobType$javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl$dsl$JobType$javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl$JobType$javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl/JobType$javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl/JobType$javaposse/jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl/JobType$javaposse/jobdsl/dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl/JobType$javaposse/jobdsl/dsl/JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/lang/javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/io/javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/net/javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/util/javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/lang/javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/util/javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse$jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl$dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl$JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl/JobParent.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/lang/javaposse$jobdsl$dsl$JobType$URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/io/javaposse$jobdsl$dsl$JobType$URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/net/javaposse$jobdsl$dsl$JobType$URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/util/javaposse$jobdsl$dsl$JobType$URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/lang/javaposse$jobdsl$dsl$JobType$URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/util/javaposse$jobdsl$dsl$JobType$URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse$jobdsl$dsl$JobType$URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl$dsl$JobType$URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl$JobType$URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl/JobType$URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/lang/URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/io/URI.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/lang/javaposse$jobdsl$dsl$JobType$File.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/io/javaposse$jobdsl$dsl$JobType$File.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/net/javaposse$jobdsl$dsl$JobType$File.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/util/javaposse$jobdsl$dsl$JobType$File.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/lang/javaposse$jobdsl$dsl$JobType$File.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/util/javaposse$jobdsl$dsl$JobType$File.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse$jobdsl$dsl$JobType$File.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl$dsl$JobType$File.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl$JobType$File.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl/JobType$File.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/lang/File.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/lang/javaposse$jobdsl$dsl$JobType$ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/io/javaposse$jobdsl$dsl$JobType$ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/net/javaposse$jobdsl$dsl$JobType$ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/util/javaposse$jobdsl$dsl$JobType$ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/lang/javaposse$jobdsl$dsl$JobType$ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/util/javaposse$jobdsl$dsl$JobType$ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse$jobdsl$dsl$JobType$ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl$dsl$JobType$ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl$JobType$ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "javaposse/jobdsl/dsl/JobType$ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/lang/ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/io/ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/net/ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "java/util/ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/lang/ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/lang/ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "groovy/util/ConfigSlurper.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "test/dslBeanInfo.groovy"
[JarClassLoader] INFO:  findResource(): unable to locate "test/dslBeanInfo.groovy"
[JarClassLoader] INFO:  findResources(META-INF/services/org.codehaus.groovy.transform.ASTTransformation)
[JarClassLoader] INFO:  findResources: looking in [lib/guava-14.0.1.jar, lib/groovy-all-1.8.6.jar, lib/commons-codec-1.8.jar, main/main.jar, lib/slf4j-simple-1.4.3.jar, lib/ivy-2.2.0.jar, lib/slf4j-api-1.4.3.jar, /, lib/xmlunit-1.4.jar]
[JarClassLoader] INFO:  findResources(): Adding jar:file:/job-dsl-core/build/libs/job-dsl-core-1.16-SNAPSHOT-standalone.jar!/lib/groovy-all-1.8.6.jar!/META-INF/services/org.codehaus.groovy.transform.ASTTransformation to resources list.
[JarClassLoader] INFO:  findResource(): unable to locate "script13746097612051039366452BeanInfo.groovy"
<groovy.util.ConfigObject@e3297f16 configFile=file:/Users/jameslevinson/workspace-git/job-dsl-plugin/work/jobs/strip_it_down/workspace/properties.groovy header=null=null accessOrder=false table=[null, null, jobs={mongo={email=ds-...@nimrod.com}}, null, null, null, null, null, null, null, null, null, null, null, null, null] size=1 threshold=12 loadFactor=0.75 modCount=1 entrySet=[jobs={mongo={email=ds-...@nimrod.com}}] keySet=null values=null>


Justin Ryan

unread,
Jul 25, 2013, 1:06:06 AM7/25/13
to job-dsl-plugin
We took this offline and figured out (well, pretty sure) that ConfigSlurper can't be used within the DSL. It's most related to the fact that we're already creating a Script object, and config parser tries to do the same thing. The alternatives are to make a real Groovy class, which is very similar to a ConfigSlurper script, or consume JSON; both of which should be easy in Groovy and we know work.


--
You received this message because you are subscribed to the Google Groups "job-dsl-plugin" group.
To unsubscribe from this group and stop receiving emails from it, send an email to job-dsl-plugi...@googlegroups.com.
To post to this group, send email to job-dsl...@googlegroups.com.

xia...@gmail.com

unread,
Jan 13, 2014, 4:54:41 AM1/13/14
to job-dsl...@googlegroups.com
I am a newcomer of DSL and Groovy, could you give a script segment on how to read property from property file.

在 2013年7月25日星期四UTC+8下午1时06分06秒,Justin Ryan写道:

James Levinson

unread,
Jan 14, 2014, 2:03:15 AM1/14/14
to job-dsl...@googlegroups.com
Here's an example of how one could a json properties file of artifacts with varying metadata and create jobs:
ArrayList artifacts = (ArrayList) getArtifacts()
Iterator it = artifacts.iterator();

while(it.hasNext()) {
Object a = it.next();
/* START DSL */
job {
name "${a.name}"
logRotator (-1,10,-1,-1)
label 'master'
priority a.priority
steps { shell 'bash -cl ...'  }
publishers {
   mailer "${a.email}", true, false
}
}
/* END DSL */

}

ArrayList getArtifacts() {
List artifacts = new ArrayList()
def ARTIFACTS = new java.io.FileReader("${WORKSPACE}/jobs.json")
def result = new groovy.json.JsonSlurper().parse(ARTIFACTS)
if (!result.equals(null)) {
artifacts = (ArrayList) result;
}
return artifacts
}

/*
 a sample json file at ${WORKSPACE}/jobs.json
[
 {
    "name":"xxx",
    "email":"q...@myorg.com",
    "priority":1000,
    "mavenopts":"-Xms1024M -Xmx2048M -XX:MaxPermSize=256M -Dmaven.junit.forkmode=perTest"  

  },
  {
    "name":"xxx2",
    "email":"q...@myorg.com",
    "priority":100
  },
  {
    "name":"i18n",
    "email":"qa-...@myorg.com",
    "priority":500
  }
]
*/

i hope it helps

Mateusz Kijowski

unread,
Jan 20, 2015, 7:00:22 PM1/20/15
to job-dsl...@googlegroups.com


W dniu czwartek, 25 lipca 2013 07:06:06 UTC+2 użytkownik Justin Ryan napisał:
We took this offline and figured out (well, pretty sure) that ConfigSlurper can't be used within the DSL. It's most related to the fact that we're already creating a Script object, and config parser tries to do the same thing. The alternatives are to make a real Groovy class, which is very similar to a ConfigSlurper script, or consume JSON; both of which should be easy in Groovy and we know work.

So there's really no way to make ConfigSlurper work in DSL? The below should allow: a) configuration in job.conf use values defined in common.conf (thanks to setBinding()), b) configuration in job.conf to override configuration from common.conf (thanks to merge()). Is it possible to achieve that with any of the alternatives specified?

def config_files['common.conf','job.conf']
def
config = new ConfigObject()
config_files
.each { config_file ->
           
def config_slurper=new ConfigSlurper()
           
def file=new File(config_file)
           
if (file.isFile()) {
               
def new_config = config_slurper.parse(file.toURL())
                new_config
.setBinding(config)
                config
.merge(new_config)
           
}
       
}



 

Daniel Spilker

unread,
Jan 21, 2015, 3:39:56 PM1/21/15
to job-dsl...@googlegroups.com
You must set the class loader of the ConfigSlurper to make it work:

def slurper = new ConfigSlurper()
slurper.classLoader = this.class.classLoader

def config = slurper.parse('''
grails.webflow.stateless = true
smtp {
    mail.host = 'smtp.myisp.com'
    mail.auth.user = 'server'
}
resources.URL = "http://localhost:80/resources"
''')

println config


Mateusz Kijowski

unread,
Jan 22, 2015, 1:04:57 PM1/22/15
to job-dsl...@googlegroups.com
Indeed it works when I set ConfigSlurper's classloader, though with a small modification. Perhaps because I'm trying to use this in a utility class I had to get the classloader from this and not from this.class

slurper.classLoader = this.classLoader

Thank you very much!
Reply all
Reply to author
Forward
0 new messages