Need help getting a sample scriptler groovy script to run on a slave.

1,114 views
Skip to first unread message

Damon G

unread,
Aug 16, 2012, 8:22:59 AM8/16/12
to jenkins...@googlegroups.com
Hi There,
   I've been playing with the groovy plugin and I'm able to run a few sample groovy scripts on the master using the system groovy script option in the job. However I can't seem to get the same code to execute on the slave by executing a groovy script or by using the scriptler plugin. Even a simple "println" statement doesn't work. For instance:

import hudson.model.*
prinln("hello!!!")

results in:

Execution of script [test.groovy] failed - Unable to serialize org.jenkinsci.plugins.scriptler.util.GroovyScript@75f0ab39Build step 'Scriptler script' marked build as failure

I get the same thing if I just do prinln("hello!!!") and leave out the import statement.

I have groovy installed on the slave but I must be missing something. When I execute on the slave do I need something additional in my classpath? I didn't seem to need anything explicit in my classspath to run this as a system groovy script on the master.

Does anyone have simple example config to share? I think I must be missing something fairly basic here.

Thanks!



Sami Tikka

unread,
Aug 17, 2012, 5:27:09 PM8/17/12
to jenkins...@googlegroups.com
You're not being too forthcoming with what you want to accomplish, so this may not help you much:

Like it says in the System Groovy Script build step, system Groovy script always executes on the master. The "system Groovy" actually executes inside of Jenkins, in the same vm, so system Groovy can do many of the same things as a plugin can.

If you want to run a Groovy script on the slave, you need to use the "Execute Groovy Script" build step and then, if the job is set to execute on a slave, Jenkins will really spawn the Groovy process in the slave.

-- Sami

Damon G

unread,
Aug 20, 2012, 6:45:16 PM8/20/12
to jenkins...@googlegroups.com
My apologies,
  I wasn't trying to be vague. I thought it would be easier if I set my goal to be running any of the sample scripts listed on the groovy sample script page. I am actually able to run groovy code on the slave. I'm actually trying to use the scriptlet plugin so that I can store the groovy script on the master and have it copy to the slave and execute at run time. From what I'm reading that's one of the benefits of using the scriptlet plug-in apparently: storage of the groovy scripts on the master, without the need to copy it to the slave at execution time.

To your point, I haven't really been that clear.

I have a scriptler script saved on the master called "test". It contains this one line:

    println System.getenv("PATH")
When I run this from the Scriptler console interface against the master it works fine and prints the contents of the PATH environment variable.

However, when I attempt to run it against a slave I get the same error I reported in my last post.

I also get the same error when I "execute a scriptlet" as a build step and execute it on a slave. Again, works fine if I point it to the master.

I've even tried replacing my one line of code with :

prinln "hello world"

and get the same error! If I can't do a simple print statement I must be doing something very basic incorrectly with my environment.

I'm guessing my issue with executing groovy on the slave is specific to the scriplter plugin. I think this because I'm able to execute groovy on the slave if I specify a groovy script as a build step...the only caveat there is that the only groovy I can execute is basic groovy...I'm not able to reference any of the jenkins api's when executing on the slave.

Does that help describe what I'm doing a little better?




Take for instance
Reply all
Reply to author
Forward
0 new messages