--
Regards
Darren
WarningsResultAction action =
getAction("hudson.plugins.warnings.WarningsResultAction")
From this object you get the result using action.getResult()
Maybe we can work together on making an example for the warnings plug-in
so that I can include it on the wiki page?
Ulli
I'd be happy to work on something together. I did however try a few
variants but the hudson.plugins.warnings.WarningsResultAction class
could not be found, I tried variants of this:
warningsResultAction =
build.getAction(Class.forName("hudson.plugins.warnings.WarningsResultAction"))
warningsResultAction =
build.getAction(hudson.plugins.warnings.WarningsResultAction.class)
and using the class loader:
ClassLoader cl = it.class.getClassLoader()
def warningsClass =
cl.loadClass("hudson.plugins.warnings.WarningsResultAction", true)
Is there something different about the groovy parser engine loaded by
email-ext which would mean other plugin classes were not available.
Unfortunately I then decided to upgrade to Jenkins 1.459 along with:
Static analysis utilities 1.38
Warnings 3.28
Static analysis collector 1.24
Email-ext 2.18
This has broken my ability to build and configure the project, when I build:
11-Apr-2012 13:55:43 hudson.model.Executor run
SEVERE: Executor threw an exception
java.lang.AssertionError: class
hudson.plugins.warnings.WarningsPublisher is missing its descriptor
at jenkins.model.Jenkins.getDescriptorOrDie(Jenkins.java:1076)
at hudson.tasks.Publisher.getDescriptor(Publisher.java:123)
at hudson.tasks.Recorder.getDescriptor(Recorder.java:51)
at hudson.plugins.warnings.WarningsPublisher.getDescriptor(WarningsPublisher.java:323)
at hudson.plugins.warnings.WarningsPublisher.getDescriptor(WarningsPublisher.java:41)
at hudson.model.Descriptor.toMap(Descriptor.java:873)
at hudson.util.DescribableList.toMap(DescribableList.java:128)
at hudson.model.Project.getPublishers(Project.java:109)
at hudson.model.Build$RunnerImpl.cleanUp(Build.java:171)
at hudson.model.Run.run(Run.java:1457)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:238)
and when I try and configure the project I can't access email-ext or
warnings configuration information:
11-Apr-2012 13:46:50 hudson.ExpressionFactory2$JexlExpression evaluate
WARNING: Caught exception evaluating: i.descriptor. Reason:
java.lang.reflect.InvocationTargetExcept
ion
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125)
at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectIm
pl.java:314)
at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185)
at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75)
at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:5
1)
at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:72)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$3.run(CoreTagLibrary.java:134)
--
Regards
Darren
I hope you mean email-ext 2.19. There is nothing different about the groovy implementation in email-ext, it uses the same one as the rest of Jenkins.
--
Regards
Darren
--
Regards
Darren
Ulli
println(hudson.model.Hudson.instance.getItem("Your Job
Name").getLastBuild().getAction(hudson.plugins.warnings.WarningsResultAction.class))
BTW: Maybe we can discuss this topic in our IRC channel then we will
have faster feedback than via mail?
https://wiki.jenkins-ci.org/display/JENKINS/IRC+Channel
Ulli
On 04/11/2012 02:57 PM, Darren Syzling wrote:
Thanks - at the moment this is a background task and I have a few
other pressing things to attend to so can't hookup via IRC today. But
yes the warnings are appearing on the build info. And the following
works from the script console:
cl = getClass().getClassLoader()
def warningsClass =
cl.loadClass("hudson.plugins.warnings.WarningsResultAction", true)
But doesn't from within the mail template.
Regards
Darren
--
Regards
Darren
--
Website: http://earl-of-code.com
Thanks,
slide
--
Website: http://earl-of-code.com
slide
--
Website: http://earl-of-code.com
Look forward to testing an updated version when available.
Darren
private static final class Script implements
DelegatingCallable<String,RuntimeException> {
private final String script;
private transient ClassLoader cl;
private Script(String script) {
this.script = script;
cl = getClassLoader();
}
public ClassLoader getClassLoader() {
return Jenkins.getInstance().getPluginManager().uberClassLoader;
}
public String call() throws RuntimeException {
// if we run locally, cl!=null. Otherwise the delegating
classloader will be available as context classloader.
if (cl==null) cl =
Thread.currentThread().getContextClassLoader();
GroovyShell shell = new GroovyShell(cl);
StringWriter out = new StringWriter();
PrintWriter pw = new PrintWriter(out);
shell.setVariable("out", pw);
try {
Object output = shell.evaluate(script);
if(output!=null)
pw.println("Result: "+output);
} catch (Throwable t) {
t.printStackTrace(pw);
}
return out.toString();
}
}
The part I am interested in is when it uses the uberClassLoader vs
using the getContextClassLoader. How is cl set to null for executing
remotely? I am trying to replicate this setup for the groovy
templating in the email-ext plugin so it can load other plugins and
such.
Thanks,
slide
--
Website: http://earl-of-code.com