2017-03-20 9 views
0

私はJenkins、Groovy、Javaについては初めてです。 JenkinsのJavaライブラリをインポートするためのテスト共有ライブラリを作成しようとしています。しかし、classLoaderが見つからないため、ビルドに失敗しています。私はここで何が起こっているのか分かりません。いずれにせよ、これを解決するための正しい方向に私を指摘してください。ジェンキンスのビルドは、クラスローダーがグラブで見つからないために失敗しました

package au.com.test.test 

@Grapes([ 
    @Grab(group = 'com.amazonaws', module = 'aws-java-sdk', version =  '1.11.22'), 
    @Grab(group = 'com.offbytwo.jenkins', module = 'jenkins-client', version = '0.3.7'), 
    @GrabConfig(systemClassLoader=true) 
]) 
import com.offbytwo.jenkins.client.JenkinsHttpClient 
import com.amazonaws.* 
def prepTaskDefinition(File envStage) { 
InputStream input = new FileInputStream(envStage) 
BufferedReader reader = new BufferedReader(new InputStreamReader(input)) 
StringBuilder out = new StringBuilder() 
String line 
List<String> secrets = new ArrayList<>() 
while ((line=reader.readLine() != null)) { 
    if (! line.contains("#")) { 
     if (! line.contains("\$")) { 
      //secrets.add(line.subString(line.indexOf("{") + 1, line.indexOf("}"))) 
      secrets.add(line.substring(line.indexOf("{") + 1, line.indexOf("}"))) 
     } 
     JenkinsHttpClient jenkinsHttpClient = new JenkinsHttpClient(new URI("https://test.company.com.au")) 

     for (String secret : secrets) { 
      String path = String.format("https://test.company.com.au/job/Domain/credentials/store/folder/test/_/credentials/%s", secret); 
      jenkinsHttpClient.get(path) 
     } 
    } 
} 
reader.close() 
return out 





    java.lang.ExceptionInInitializerError 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) 
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:60) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:235) 
    at org.kohsuke.groovy.sandbox.impl.Checker$3.call(Checker.java:194) 
    at org.kohsuke.groovy.sandbox.GroovyInterceptor.onNewInstance(GroovyInterceptor.java:40) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onNewInstance(SandboxInterceptor.java:128) 
    at org.kohsuke.groovy.sandbox.impl.Checker$3.call(Checker.java:191) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedConstructor(Checker.java:188) 
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.constructorCall(SandboxInvoker.java:20) 
    at taskDefinition.call(/var/lib/jenkins/jobs/Domain/jobs/fe-server-search-results/branches/feature-nr.21obta/builds/55/libs/devops-jenkins-libraries/vars/taskDefinition.groovy:9) 
    at WorkflowScript.run(WorkflowScript:8) 
    at ___cps.transform___(Native Method) 
    at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:96) 
    at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixName(FunctionCallBlock.java:77) 
    at sun.reflect.GeneratedMethodAccessor604.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72) 
    at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21) 
    at com.cloudbees.groovy.cps.Next.step(Next.java:74) 
    at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:33) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:30) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108) 
    at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:30) 
    at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:165) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:328) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:80) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:240) 
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:228) 
    at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112) 
    at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
    Caused by: java.lang.RuntimeException: No suitable ClassLoader found for grab 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) 
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:247) 
    at groovy.grape.GrapeIvy.chooseClassLoader(GrapeIvy.groovy:184) 
    at groovy.grape.GrapeIvy$chooseClassLoader.callCurrent(Unknown Source) 
    at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:251) 
    at groovy.grape.Grape.grab(Grape.java:167) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) 
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:46) 
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:102) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194) 
    at org.kohsuke.groovy.sandbox.impl.Checker$2.call(Checker.java:182) 
    at org.kohsuke.groovy.sandbox.GroovyInterceptor.onStaticCall(GroovyInterceptor.java:33) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onStaticCall(SandboxInterceptor.java:140) 
    at org.kohsuke.groovy.sandbox.impl.Checker$2.call(Checker.java:180) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedStaticCall(Checker.java:177) 
    at org.kohsuke.groovy.sandbox.impl.Checker$checkedStaticCall.callStatic(Unknown Source) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:222) 
    at au.com.domain.ecs.EcsTaskDefinition.<clinit>(EcsTaskDefinition.groovy) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) 
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:60) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:235) 
    at org.kohsuke.groovy.sandbox.impl.Checker$3.call(Checker.java:194) 
    at org.kohsuke.groovy.sandbox.GroovyInterceptor.onNewInstance(GroovyInterceptor.java:40) 
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onNewInstance(SandboxInterceptor.java:128) 
    at org.kohsuke.groovy.sandbox.impl.Checker$3.call(Checker.java:191) 
    at org.kohsuke.groovy.sandbox.impl.Checker.checkedConstructor(Checker.java:188) 
    at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.constructorCall(SandboxInvoker.java:20) 
    ... 28 more 

答えて

1

あなたがブドウをロードするときに、システムのクラスローダを使用したい場合は、trueに設定groovydoc

パブリック抽象ブールにSystemClassLoader

から

@GrabConfig(systemClassLoader=true) 

を使用しないようにしてください。これは通常、コアJavaクラスがグラブされたクラスを参照する必要がある場合にのみ必要です。 DriverManagerを使用してアクセスされるデータベース・ドライバーの場合

これらのクラスを参照するには、スクリプトにJavaクラスが必要なように見えません。

+1

ありがとうございます。https://issues.jenkins-ci.org/browse/JENKINS-41122によると、私はジェンキンス共有ライブラリをルートレベルに移動し、@GrabConfig(systemClassLoader = true)を自分のコードからそれを働かせてください –

+0

あなたはgithubのあなたの例を投稿することができます。私は試しましたが、まだ持っています 'java.lang.RuntimeException:適切なClassLoaderが見つかりませんでした' – Joey

関連する問題