-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
2.5 shared libraries - https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Shared+Groovy+Libraries+Plugin
2.26 groovy - https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Groovy+Plugin
Baseline global Library code:
Here is the base code for the example.
I will add to each example where I change the code.
jenkins.mkobit.example.FirstClass
package jenkins.mkobit.example class FirstClass { FirstClass() { } }
jenkins.mkobit.example.SiblingClass
package jenkins.mkobit.example class SiblingClass { static class SiblingInner { } }
Jenkinsfile examples:
FirstClass creates an instance of sibling class
jenkins.mkobit.example.FirstClass
package jenkins.mkobit.example class FirstClass { FirstClass() { new SiblingClass() } }
Jenkinsfile
@Library('pipelineUtilities@mkobit-global-cps-test') import jenkins.mkobit.example.FirstClass def firstClass = new FirstClass()
Result: SUCCESS
FirstClass creates an instance of sibling static nested class in constructor
jenkins.mkobit.example.FirstClass
package jenkins.mkobit.example class FirstClass { FirstClass() { new SiblingClass.SiblingInner() } }
Jenkinsfile
@Library('pipelineUtilities@mkobit-global-cps-test') import jenkins.mkobit.example.FirstClass def firstClass = new FirstClass()
Result: FAILURE - I expect this to work similarly to how normal Groovy code works. Instead, I get a failed compilation issue.
BUG! exception in phase 'semantic analysis' in source unit 'WorkflowScript' The lookup for jenkins.mkobit.example.FirstClass caused a failed compilaton. There should not have been any compilation from this call. at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:190) at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:170) at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:126) at org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:676) at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:308) at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1218) at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:176) at org.codehaus.groovy.control.CompilationUnit$11.call(CompilationUnit.java:651) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:931) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:542) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268) at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688) at groovy.lang.GroovyShell.parse(GroovyShell.java:700) at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:67) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:429) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:392) at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:221) at hudson.model.ResourceController.execute(ResourceController.java:98) at hudson.model.Executor.run(Executor.java:405) Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: /var/jenkins_home/jobs/ff/builds/29/libs/pipelineUtilities/src/jenkins/mkobit/example/FirstClass.groovy: 5: unable to resolve class SiblingClass.SiblingInner @ line 5, column 5. new SiblingClass.SiblingInner()
FirstClass creates an instance of sibling static nested class when full classname imported in classfile
jenkins.mkobit.example.FirstClass
package jenkins.mkobit.example import jenkins.mkobit.example.SiblingClass.SiblingInner class FirstClass { FirstClass() { new SiblingInner() } }
Jenkinsfile
@Library('pipelineUtilities@mkobit-global-cps-test') import jenkins.mkobit.example.FirstClass def firstClass = new FirstClass()
Result: FAILURE - I thought this might help out by forcing compilation.
BUG! exception in phase 'semantic analysis' in source unit 'WorkflowScript' The lookup for jenkins.mkobit.example.FirstClass caused a failed compilaton. There should not have been any compilation from this call. at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:190) at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:170) at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:126) at org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:676) at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:308) at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1218) at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:176) at org.codehaus.groovy.control.CompilationUnit$11.call(CompilationUnit.java:651) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:931) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:542) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268) at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688) at groovy.lang.GroovyShell.parse(GroovyShell.java:700) at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:67) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:429) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:392) at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:221) at hudson.model.ResourceController.execute(ResourceController.java:98) at hudson.model.Executor.run(Executor.java:405) Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: /var/jenkins_home/jobs/ff/builds/30/libs/pipelineUtilities/src/jenkins/mkobit/example/FirstClass.groovy: 3: unable to resolve class jenkins.mkobit.example.SiblingClass.SiblingInner @ line 3, column 1. import jenkins.mkobit.example.SiblingClass.SiblingInner
FirstClass creates an instance of sibling static nested class when class is imported in Jenkinsfile
jenkins.mkobit.example.FirstClass
package jenkins.mkobit.example class FirstClass { FirstClass() { new SiblingClass.SiblingInner() } }
Jenkinsfile
@Library('pipelineUtilities@mkobit-global-cps-test') import jenkins.mkobit.example.SiblingClass import jenkins.mkobit.example.FirstClass def firstClass = new FirstClass()
Result: FAILURE This also fails
BUG! exception in phase 'semantic analysis' in source unit 'WorkflowScript' The lookup for jenkins.mkobit.example.FirstClass caused a failed compilaton. There should not have been any compilation from this call. at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:190) at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:170) at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:126) at org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:676) at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:308) at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1218) at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:176) at org.codehaus.groovy.control.CompilationUnit$11.call(CompilationUnit.java:651) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:931) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:542) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268) at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688) at groovy.lang.GroovyShell.parse(GroovyShell.java:700) at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:67) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:429) at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:392) at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:221) at hudson.model.ResourceController.execute(ResourceController.java:98) at hudson.model.Executor.run(Executor.java:405) Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: /var/jenkins_home/jobs/ff/builds/37/libs/pipelineUtilities/src/jenkins/mkobit/example/FirstClass.groovy: 5: unable to resolve class SiblingClass.SiblingInner @ line 5, column 5. new SiblingClass.SiblingInner() ^ 1 error at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:946) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:542) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254) at groovy.lang.GroovyClassLoader.recompile(GroovyClassLoader.java:761) at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:718) at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:787) at java.lang.ClassLoader.loadClass(ClassLoader.java:411) at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:677) at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:545) at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:185) ... 20 more Finished: FAILURE
No idea offhand. Will try to reproduce & investigate some day. No time now.