Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-48011

Calling buildInfo.env.collect after buildInfo.append(server.upload(uploadSpec)) causing NPE in Env.java

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • artifactory-plugin
    • None
    • Jenkins 2.89
      artifactory-plugin: 2.13.1

       

      Hi everyone,

      i just faced very weird issue using buildInfo.append() function.

      I see this exception:

       

      java.lang.NullPointerException at org.jfrog.hudson.pipeline.types.buildInfo.Env.collect(Env.java:102) 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.PojoMetaClassSite.call(PojoMetaClassSite.java:47) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:19) at com.mirantis.mcp.MCPArtifactory.uploadBinariesToArtifactory(/var/jenkins_home/jobs/mcp_k8s_test_pipeline/builds/12/libs/pipeline-library/src/com/mirantis/mcp/MCPArtifactory.groovy:234) at 
      ...
      

       

      I using this code

      def uploadBinariesToArtifactoryLocal (ArtifactoryServer server, BuildInfo buildInfo, String uploadSpec,
       Boolean publishInfo = false) {
       println "!!!!!!!!!!!!!!!!! Build Info !!!!!!!!!!!!!!!!!!!!!!!!!!!"
       buildInfo.env.collect()
       println "${buildInfo.env.vars}"
       buildInfo.append(server.upload(uploadSpec))
       println "!!!!!!!!!!!!!!!!! Build Info After Upload Spec !!!!!!!!!!!!!!!!!!!!!!!!!!!"
       buildInfo.env.collect()
       println "${buildInfo.env.vars}"
      if ( publishInfo ) {
       buildInfo.env.capture = true
       buildInfo.env.filter.addInclude("*")
       buildInfo.env.filter.addExclude("*PASSWORD*")
       buildInfo.env.filter.addExclude("*password*")
       buildInfo.env.collect() // this one will fails
       server.publishBuildInfo(buildInfo)
       }
      }
      

       

      So the problematic line is buildInfo.append(server.upload(uploadSpec)).
      If i use this call: server.upload(uploadSpec, buildInfo) it works.

      That probably means the reason of this failure is Env recreation inside append method which caused NPE because CpsScript inside created env is null.

      https://github.com/jenkinsci/artifactory-plugin/blob/master/src/main/java/org/jfrog/hudson/pipeline/types/buildInfo/BuildInfo.java#L97

       

            yahaviz Yahav Itzhak
            jakubjosef Jakub Josef
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: