tanamonの稀に良く書く日記

KEEP CALM AND DRINK BEER

Hudson CLIでスクリプトを実行する(失敗)

やってみたけどダメだった。
何でだろ?


追記:
コメント欄でid:kkawaさんが答えていますが、Hudson ver. 1.313のバグでした。
現バージョンのHudson ver. 1.314では直ってます。修正はえぇ!

test.groovy

import hudson.model.*;
hudson = Hudson.instance

特に害のないスクリプトを用意。

実行

java -jar hudson-cli.jar -s http://localhost:8080/ groovy test.groovy

普通に実行。

エラーログ

log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
log4j:WARN Please initialize the log4j system properly.
java.io.IOException: Remote call failed
        at hudson.remoting.Channel.call(Channel.java:520)
        at hudson.cli.GroovyCommand.loadScript(GroovyCommand.java:85)
        at hudson.cli.GroovyCommand.run(GroovyCommand.java:75)
        at hudson.cli.CLICommand.main(CLICommand.java:148)
        at hudson.model.Hudson$CliManager.main(Hudson.java:2756)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:264)
        at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:245)
        at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:205)
        at hudson.remoting.UserRequest.perform(UserRequest.java:103)
        at hudson.remoting.UserRequest.perform(UserRequest.java:47)
        at hudson.remoting.Request$2.run(Request.java:236)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ExceptionInInitializerError
        at java.io.ObjectStreamClass.hasStaticInitializer(Native Method)
        at java.io.ObjectStreamClass.computeDefaultSUID(ObjectStreamClass.java:1696)
        at java.io.ObjectStreamClass.access$100(ObjectStreamClass.java:52)
        at java.io.ObjectStreamClass$1.run(ObjectStreamClass.java:205)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.io.ObjectStreamClass.getSerialVersionUID(ObjectStreamClass.java:202)
        at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:558)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        at hudson.remoting.UserRequest.perform(UserRequest.java:87)
        ... 8 more
Caused by: java.lang.NullPointerException
        at hudson.cli.CLICommand.<clinit>(CLICommand.java:210)
        ... 25 more

ぬるぽ

CLICommand.java

        // register option handlers that are defined
        ClassLoaders cls = new ClassLoaders();
        cls.put(Hudson.getInstance().getPluginManager().uberClassLoader);

http://fisheye4.atlassian.com/browse/hudson/trunk/hudson/main/core/src/main/java/hudson/cli/CLICommand.java?r=19119

ソース見てもよくわからないなぁ。