-
Improvement
-
Resolution: Unresolved
-
Minor
-
None
When overriding an existing container in an inherited pod template, it's necessary to specify the name and image of that container, otherwise a long and unclear backtrace results. It'd be nicer if it weren't necessary to re-specify the image - just the container name.
podTemplate(label: "mypod", cloud: "openshift", inheritFrom: "maven", containers: [
{{ containerTemplate(name: "jnlp", image: "openshift/jenkins-slave-maven-centos7:v3.9", resourceLimitMemory: "512Mi")}}
]) {
...
}
Example backtrace if image is not specified:
java.lang.IllegalArgumentException: Could not instantiate {label=mypod, inheritFrom=maven, containers=[@containerTemplate(name=jnlp,resourceLimitMemory=512Mi)]} for PodTemplateStep(label: String, name: String, annotations?: PodAnnotation(key: String, value: String)[], cloud?: String, containers?: ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String)[], envVars?: TemplateEnvVar{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], idleMinutes?: int, imagePullSecrets?: String[], inheritFrom?: String, instanceCap?: int, namespace?: String, nodeSelector?: String, nodeUsageMode?: Mode[NORMAL, EXCLUSIVE], serviceAccount?: String, slaveConnectTimeout?: int, volumes?: PodVolume{ConfigMapVolume(mountPath: String, configMapName: String) | EmptyDirVolume(mountPath: String, memory: boolean) | HostPathVolume(hostPath: String, mountPath: String) | NfsVolume(serverAddress: String, serverPath: String, readOnly: boolean, mountPath: String) | PersistentVolumeClaim(mountPath: String, claimName: String, readOnly: boolean) | SecretVolume(mountPath: String, secretName: String)}[], workingDir?: String, workspaceVolume?: WorkspaceVolume{EmptyDirWorkspaceVolume(memory: boolean) | HostPathWorkspaceVolume(hostPath: String) | NfsWorkspaceVolume(serverAddress: String, serverPath: String, readOnly: boolean) | PersistentVolumeClaimWorkspaceVolume(claimName: String, readOnly: boolean)}): java.lang.IllegalArgumentException: Could not instantiate {name=jnlp, resourceLimitMemory=512Mi} for ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String): java.lang.reflect.InvocationTargetException
at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264)
at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:205)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150)
at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155)
at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:123)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:110)
at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:153)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:157)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
at WorkflowScript.run(WorkflowScript:1)
at __cps.transform__(Native Method)
at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)
at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)
at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
at com.cloudbees.groovy.cps.impl.ClosureBlock.eval(ClosureBlock.java:46)
at com.cloudbees.groovy.cps.Next.step(Next.java:83)
at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:173)
at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:162)
at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)
at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)
at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:162)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:35)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32)
at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:242)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:230)
at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
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:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: Could not instantiate {name=jnlp, resourceLimitMemory=512Mi} for ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String): java.lang.reflect.InvocationTargetException
at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264)
at org.jenkinsci.plugins.structs.describable.UninstantiatedDescribable.instantiate(UninstantiatedDescribable.java:175)
at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:372)
at org.jenkinsci.plugins.structs.describable.DescribableModel.coerceList(DescribableModel.java:463)
at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:365)
at org.jenkinsci.plugins.structs.describable.DescribableModel.injectSetters(DescribableModel.java:338)
at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:261)
at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:205)
at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150)
at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155)
at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:123)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:110)
at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:153)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:157)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
... 34 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:260)
... 62 more
Caused by: java.lang.IllegalArgumentException
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:72)
at org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate.<init>(ContainerTemplate.java:62)
... 67 more
[JENKINS-48585] must specify image in containerTemplate when inheriting
Description |
Original:
When overriding an existing container in an inherited pod template, it's necessary to specify the name *and image* of that container, otherwise a long and unclear backtrace results. It'd be nicer if it weren't necessary to re-specify the image - just the container name. {{podTemplate(label: "mypod", cloud: "openshift", inheritFrom: "maven", containers: [}} {{ containerTemplate(name: "jnlp", *image: "openshift/jenkins-slave-maven-centos7:v3.9"*, resourceLimitMemory: "512Mi")}} {{]) \{}} {{...}} {{}}} Example backtrace if image is not specified: java.lang.IllegalArgumentException: Could not instantiate \{label=mypod, inheritFrom=maven, containers=[@containerTemplate(name=jnlp,resourceLimitMemory=512Mi)]} for PodTemplateStep(label: String, name: String, annotations?: PodAnnotation(key: String, value: String)[], cloud?: String, containers?: ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String)[], envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], idleMinutes?: int, imagePullSecrets?: String[], inheritFrom?: String, instanceCap?: int, namespace?: String, nodeSelector?: String, nodeUsageMode?: Mode[NORMAL, EXCLUSIVE], serviceAccount?: String, slaveConnectTimeout?: int, volumes?: PodVolume\{ConfigMapVolume(mountPath: String, configMapName: String) | EmptyDirVolume(mountPath: String, memory: boolean) | HostPathVolume(hostPath: String, mountPath: String) | NfsVolume(serverAddress: String, serverPath: String, readOnly: boolean, mountPath: String) | PersistentVolumeClaim(mountPath: String, claimName: String, readOnly: boolean) | SecretVolume(mountPath: String, secretName: String)}[], workingDir?: String, workspaceVolume?: WorkspaceVolume\{EmptyDirWorkspaceVolume(memory: boolean) | HostPathWorkspaceVolume(hostPath: String) | NfsWorkspaceVolume(serverAddress: String, serverPath: String, readOnly: boolean) | PersistentVolumeClaimWorkspaceVolume(claimName: String, readOnly: boolean)}): java.lang.IllegalArgumentException: Could not instantiate \{name=jnlp, resourceLimitMemory=512Mi} for ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String): java.lang.reflect.InvocationTargetException at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264) at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201) at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:205) at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150) at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155) at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:123) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:110) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:153) at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:157) at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17) at WorkflowScript.run(WorkflowScript:1) at ___cps.transform___(Native Method) at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57) at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109) at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72) at com.cloudbees.groovy.cps.impl.ClosureBlock.eval(ClosureBlock.java:46) at com.cloudbees.groovy.cps.Next.step(Next.java:83) at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:173) at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:162) at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122) at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261) at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:162) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:35) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32) at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:242) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:230) at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64) at java.util.concurrent.FutureTask.run(FutureTask.java:266) 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:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.IllegalArgumentException: Could not instantiate \{name=jnlp, resourceLimitMemory=512Mi} for ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String): java.lang.reflect.InvocationTargetException at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264) at org.jenkinsci.plugins.structs.describable.UninstantiatedDescribable.instantiate(UninstantiatedDescribable.java:175) at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:372) at org.jenkinsci.plugins.structs.describable.DescribableModel.coerceList(DescribableModel.java:463) at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:365) at org.jenkinsci.plugins.structs.describable.DescribableModel.injectSetters(DescribableModel.java:338) at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:261) at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201) at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:205) at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150) at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155) at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:123) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:110) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:153) at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:157) at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17) ... 34 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:260) ... 62 more Caused by: java.lang.IllegalArgumentException at com.google.common.base.Preconditions.checkArgument(Preconditions.java:72) at org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate.<init>(ContainerTemplate.java:62) ... 67 more |
New:
When overriding an existing container in an inherited pod template, it's necessary to specify the name *and image* of that container, otherwise a long and unclear backtrace results. It'd be nicer if it weren't necessary to re-specify the image - just the container name. {{podTemplate(label: "mypod", cloud: "openshift", inheritFrom: "maven", containers: [}} \{\{ containerTemplate(name: "jnlp", *image: "openshift/jenkins-slave-maven-centos7:v3.9"*, resourceLimitMemory: "512Mi")}} {{]) \{}} {{...}} {{}}} {{ Example backtrace if image is not specified:}} {{ java.lang.IllegalArgumentException: Could not instantiate \{label=mypod, inheritFrom=maven, containers=[@containerTemplate(name=jnlp,resourceLimitMemory=512Mi)]} for PodTemplateStep(label: String, name: String, annotations?: PodAnnotation(key: String, value: String)[], cloud?: String, containers?: ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String)[], envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], idleMinutes?: int, imagePullSecrets?: String[], inheritFrom?: String, instanceCap?: int, namespace?: String, nodeSelector?: String, nodeUsageMode?: Mode[NORMAL, EXCLUSIVE], serviceAccount?: String, slaveConnectTimeout?: int, volumes?: PodVolume\{ConfigMapVolume(mountPath: String, configMapName: String) | EmptyDirVolume(mountPath: String, memory: boolean) | HostPathVolume(hostPath: String, mountPath: String) | NfsVolume(serverAddress: String, serverPath: String, readOnly: boolean, mountPath: String) | PersistentVolumeClaim(mountPath: String, claimName: String, readOnly: boolean) | SecretVolume(mountPath: String, secretName: String)}[], workingDir?: String, workspaceVolume?: WorkspaceVolume\{EmptyDirWorkspaceVolume(memory: boolean) | HostPathWorkspaceVolume(hostPath: String) | NfsWorkspaceVolume(serverAddress: String, serverPath: String, readOnly: boolean) | PersistentVolumeClaimWorkspaceVolume(claimName: String, readOnly: boolean)}): java.lang.IllegalArgumentException: Could not instantiate \{name=jnlp, resourceLimitMemory=512Mi} for ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String): java.lang.reflect.InvocationTargetException}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264)}} {{ at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201)}} {{ at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:205)}} {{ at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)}} {{ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}} {{ at java.lang.reflect.Method.invoke(Method.java:498)}} {{ at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)}} {{ at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)}} {{ at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)}} {{ at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)}} {{ at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)}} {{ at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)}} {{ at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155)}} {{ at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)}} {{ at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:123)}} {{ at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:110)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:153)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:157)}} {{ at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)}} {{ at WorkflowScript.run(WorkflowScript:1)}} {{ at ___cps.transform___(Native Method)}} {{ at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)}} {{ at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)}} {{ at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)}} {{ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}} {{ at java.lang.reflect.Method.invoke(Method.java:498)}} {{ at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)}} {{ at com.cloudbees.groovy.cps.impl.ClosureBlock.eval(ClosureBlock.java:46)}} {{ at com.cloudbees.groovy.cps.Next.step(Next.java:83)}} {{ at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:173)}} {{ at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:162)}} {{ at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)}} {{ at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)}} {{ at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:162)}} {{ at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19)}} {{ at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:35)}} {{ at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32)}} {{ at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)}} {{ at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:242)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:230)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)}} {{ at java.util.concurrent.FutureTask.run(FutureTask.java:266)}} {{ 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:511)}} {{ at java.util.concurrent.FutureTask.run(FutureTask.java:266)}} {{ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)}} {{ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)}} {{ at java.lang.Thread.run(Thread.java:748)}} {{ Caused by: java.lang.IllegalArgumentException: Could not instantiate \{name=jnlp, resourceLimitMemory=512Mi} for ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String): java.lang.reflect.InvocationTargetException}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264)}} {{ at org.jenkinsci.plugins.structs.describable.UninstantiatedDescribable.instantiate(UninstantiatedDescribable.java:175)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:372)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.coerceList(DescribableModel.java:463)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:365)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.injectSetters(DescribableModel.java:338)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:261)}} {{ at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201)}} {{ at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:205)}} {{ at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)}} {{ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}} {{ at java.lang.reflect.Method.invoke(Method.java:498)}} {{ at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)}} {{ at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)}} {{ at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)}} {{ at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)}} {{ at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)}} {{ at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)}} {{ at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155)}} {{ at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)}} {{ at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:123)}} {{ at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:110)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:153)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:157)}} {{ at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)}} {{ ... 34 more}} {{ Caused by: java.lang.reflect.InvocationTargetException}} {{ at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)}} {{ at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)}} {{ at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)}} {{ at java.lang.reflect.Constructor.newInstance(Constructor.java:423)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:260)}} {{ ... 62 more}} {{ Caused by: java.lang.IllegalArgumentException}} {{ at com.google.common.base.Preconditions.checkArgument(Preconditions.java:72)}} {{ at org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate.<init>(ContainerTemplate.java:62)}} {{ ... 67 more}} |
Description |
Original:
When overriding an existing container in an inherited pod template, it's necessary to specify the name *and image* of that container, otherwise a long and unclear backtrace results. It'd be nicer if it weren't necessary to re-specify the image - just the container name. {{podTemplate(label: "mypod", cloud: "openshift", inheritFrom: "maven", containers: [}} \{\{ containerTemplate(name: "jnlp", *image: "openshift/jenkins-slave-maven-centos7:v3.9"*, resourceLimitMemory: "512Mi")}} {{]) \{}} {{...}} {{}}} {{ Example backtrace if image is not specified:}} {{ java.lang.IllegalArgumentException: Could not instantiate \{label=mypod, inheritFrom=maven, containers=[@containerTemplate(name=jnlp,resourceLimitMemory=512Mi)]} for PodTemplateStep(label: String, name: String, annotations?: PodAnnotation(key: String, value: String)[], cloud?: String, containers?: ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String)[], envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], idleMinutes?: int, imagePullSecrets?: String[], inheritFrom?: String, instanceCap?: int, namespace?: String, nodeSelector?: String, nodeUsageMode?: Mode[NORMAL, EXCLUSIVE], serviceAccount?: String, slaveConnectTimeout?: int, volumes?: PodVolume\{ConfigMapVolume(mountPath: String, configMapName: String) | EmptyDirVolume(mountPath: String, memory: boolean) | HostPathVolume(hostPath: String, mountPath: String) | NfsVolume(serverAddress: String, serverPath: String, readOnly: boolean, mountPath: String) | PersistentVolumeClaim(mountPath: String, claimName: String, readOnly: boolean) | SecretVolume(mountPath: String, secretName: String)}[], workingDir?: String, workspaceVolume?: WorkspaceVolume\{EmptyDirWorkspaceVolume(memory: boolean) | HostPathWorkspaceVolume(hostPath: String) | NfsWorkspaceVolume(serverAddress: String, serverPath: String, readOnly: boolean) | PersistentVolumeClaimWorkspaceVolume(claimName: String, readOnly: boolean)}): java.lang.IllegalArgumentException: Could not instantiate \{name=jnlp, resourceLimitMemory=512Mi} for ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String): java.lang.reflect.InvocationTargetException}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264)}} {{ at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201)}} {{ at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:205)}} {{ at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)}} {{ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}} {{ at java.lang.reflect.Method.invoke(Method.java:498)}} {{ at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)}} {{ at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)}} {{ at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)}} {{ at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)}} {{ at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)}} {{ at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)}} {{ at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155)}} {{ at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)}} {{ at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:123)}} {{ at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:110)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:153)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:157)}} {{ at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)}} {{ at WorkflowScript.run(WorkflowScript:1)}} {{ at ___cps.transform___(Native Method)}} {{ at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)}} {{ at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)}} {{ at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)}} {{ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}} {{ at java.lang.reflect.Method.invoke(Method.java:498)}} {{ at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)}} {{ at com.cloudbees.groovy.cps.impl.ClosureBlock.eval(ClosureBlock.java:46)}} {{ at com.cloudbees.groovy.cps.Next.step(Next.java:83)}} {{ at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:173)}} {{ at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:162)}} {{ at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)}} {{ at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)}} {{ at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:162)}} {{ at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19)}} {{ at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:35)}} {{ at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32)}} {{ at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)}} {{ at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:242)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:230)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)}} {{ at java.util.concurrent.FutureTask.run(FutureTask.java:266)}} {{ 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:511)}} {{ at java.util.concurrent.FutureTask.run(FutureTask.java:266)}} {{ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)}} {{ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)}} {{ at java.lang.Thread.run(Thread.java:748)}} {{ Caused by: java.lang.IllegalArgumentException: Could not instantiate \{name=jnlp, resourceLimitMemory=512Mi} for ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String): java.lang.reflect.InvocationTargetException}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264)}} {{ at org.jenkinsci.plugins.structs.describable.UninstantiatedDescribable.instantiate(UninstantiatedDescribable.java:175)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:372)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.coerceList(DescribableModel.java:463)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:365)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.injectSetters(DescribableModel.java:338)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:261)}} {{ at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201)}} {{ at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:205)}} {{ at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150)}} {{ at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)}} {{ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)}} {{ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)}} {{ at java.lang.reflect.Method.invoke(Method.java:498)}} {{ at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)}} {{ at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)}} {{ at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)}} {{ at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)}} {{ at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)}} {{ at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)}} {{ at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155)}} {{ at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)}} {{ at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:123)}} {{ at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:110)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:153)}} {{ at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:157)}} {{ at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)}} {{ ... 34 more}} {{ Caused by: java.lang.reflect.InvocationTargetException}} {{ at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)}} {{ at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)}} {{ at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)}} {{ at java.lang.reflect.Constructor.newInstance(Constructor.java:423)}} {{ at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:260)}} {{ ... 62 more}} {{ Caused by: java.lang.IllegalArgumentException}} {{ at com.google.common.base.Preconditions.checkArgument(Preconditions.java:72)}} {{ at org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate.<init>(ContainerTemplate.java:62)}} {{ ... 67 more}} |
New:
When overriding an existing container in an inherited pod template, it's necessary to specify the name *and image* of that container, otherwise a long and unclear backtrace results. It'd be nicer if it weren't necessary to re-specify the image - just the container name. {{podTemplate(label: "mypod", cloud: "openshift", inheritFrom: "maven", containers: [}} \{\{ containerTemplate(name: "jnlp", *image: "openshift/jenkins-slave-maven-centos7:v3.9"*, resourceLimitMemory: "512Mi")}} {{]) \{}} {{...}} {{}}} Example backtrace if image is not specified: java.lang.IllegalArgumentException: Could not instantiate \{label=mypod, inheritFrom=maven, containers=[@containerTemplate(name=jnlp,resourceLimitMemory=512Mi)]} for PodTemplateStep(label: String, name: String, annotations?: PodAnnotation(key: String, value: String)[], cloud?: String, containers?: ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String)[], envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], idleMinutes?: int, imagePullSecrets?: String[], inheritFrom?: String, instanceCap?: int, namespace?: String, nodeSelector?: String, nodeUsageMode?: Mode[NORMAL, EXCLUSIVE], serviceAccount?: String, slaveConnectTimeout?: int, volumes?: PodVolume\{ConfigMapVolume(mountPath: String, configMapName: String) | EmptyDirVolume(mountPath: String, memory: boolean) | HostPathVolume(hostPath: String, mountPath: String) | NfsVolume(serverAddress: String, serverPath: String, readOnly: boolean, mountPath: String) | PersistentVolumeClaim(mountPath: String, claimName: String, readOnly: boolean) | SecretVolume(mountPath: String, secretName: String)}[], workingDir?: String, workspaceVolume?: WorkspaceVolume\{EmptyDirWorkspaceVolume(memory: boolean) | HostPathWorkspaceVolume(hostPath: String) | NfsWorkspaceVolume(serverAddress: String, serverPath: String, readOnly: boolean) | PersistentVolumeClaimWorkspaceVolume(claimName: String, readOnly: boolean)}): java.lang.IllegalArgumentException: Could not instantiate \{name=jnlp, resourceLimitMemory=512Mi} for ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String): java.lang.reflect.InvocationTargetException at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264) at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201) at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:205) at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150) at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155) at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:123) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:110) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:153) at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:157) at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17) at WorkflowScript.run(WorkflowScript:1) at ___cps.transform___(Native Method) at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57) at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109) at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72) at com.cloudbees.groovy.cps.impl.ClosureBlock.eval(ClosureBlock.java:46) at com.cloudbees.groovy.cps.Next.step(Next.java:83) at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:173) at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:162) at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122) at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261) at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:162) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:35) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:32) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:32) at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:330) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:242) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:230) at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64) at java.util.concurrent.FutureTask.run(FutureTask.java:266) 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:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.IllegalArgumentException: Could not instantiate \{name=jnlp, resourceLimitMemory=512Mi} for ContainerTemplate(name?: String, image?: String, alwaysPullImage?: boolean, args?: String, command?: String, envVars?: TemplateEnvVar\{ContainerEnvVar(key: String, value: String) | KeyValueEnvVar(key: String, value: String) | PodEnvVar(key: String, value: String) | SecretEnvVar(key: String, secretName: String, secretKey: String)}[], livenessProbe?: ContainerLivenessProbe(execArgs: String, timeoutSeconds: int, initialDelaySeconds: int, failureThreshold: int, periodSeconds: int, successThreshold: int), ports?: PortMapping(name?: String, containerPort?: int, hostPort?: int)[], privileged?: boolean, resourceLimitCpu?: String, resourceLimitMemory?: String, resourceRequestCpu?: String, resourceRequestMemory?: String, ttyEnabled?: boolean, workingDir?: String): java.lang.reflect.InvocationTargetException at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:264) at org.jenkinsci.plugins.structs.describable.UninstantiatedDescribable.instantiate(UninstantiatedDescribable.java:175) at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:372) at org.jenkinsci.plugins.structs.describable.DescribableModel.coerceList(DescribableModel.java:463) at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:365) at org.jenkinsci.plugins.structs.describable.DescribableModel.injectSetters(DescribableModel.java:338) at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:261) at org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance(StepDescriptor.java:201) at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:205) at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:150) at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155) at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:123) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:110) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:153) at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:157) at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17) ... 34 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:260) ... 62 more Caused by: java.lang.IllegalArgumentException at com.google.common.base.Preconditions.checkArgument(Preconditions.java:72) at org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate.<init>(ContainerTemplate.java:62) ... 67 more |
Assignee | Original: Carlos Sanchez [ csanchez ] |
Hello. This issue from 2017(!!!) is still present. Needing to specify the image is dangerous when overriding the global template as discrepancies between the template and jobs will arise.