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

So like, um, okay, this is weird, but like, um, are steps *supposed* to work in environment{}?

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Minor Minor
    • None
    • Jenkins 2.73.1, Pipeline Model Definition 1.2.1
    • Declarative - 1.2

      While reviewing some things in the CloudBees support queue I found an interesting ticket where somebody was using steps inside of the environment directive. I thought: SURELY THAT'S WRONG.

      But, uh, it works sometimes?

      pipeline {
          agent any
          environment {
              TONE = pwd()
              
          }
          stages {
              stage('At the tone') {
                  steps {
                      sh 'printenv | grep -i tone'
                  }
              }
          }
      }
      
      Started by user admin
      [Pipeline] node
      Running on master in /var/jenkins_home/workspace/steps-elsewhere
      [Pipeline] {
      [Pipeline] pwd
      [Pipeline] withEnv
      [Pipeline] {
      [Pipeline] stage
      [Pipeline] { (At the tone)
      [Pipeline] sh
      [steps-elsewhere] Running shell script
      + printenv
      + grep -i tone
      TONE=/var/jenkins_home/workspace/steps-elsewhere
      [Pipeline] }
      [Pipeline] // stage
      [Pipeline] }
      [Pipeline] // withEnv
      [Pipeline] }
      [Pipeline] // node
      [Pipeline] End of Pipeline
      Finished: SUCCESS
      
      pipeline {
          agent any
          environment {
              TONE = echo 'beep'
              
          }
          stages {
              stage('At the tone') {
                  steps {
                      sh 'printenv | grep -i tone'
                  }
              }
          }
      }
      
      Started by user admin
      Replayed #5
      [Pipeline] node
      Running on master in /var/jenkins_home/workspace/steps-elsewhere
      [Pipeline] {
      [Pipeline] echo
      beep
      [Pipeline] withEnv
      [Pipeline] {
      [Pipeline] stage
      [Pipeline] { (At the tone)
      [Pipeline] sh
      [steps-elsewhere] Running shell script
      + grep -i tone
      + printenv
      TONE=null
      [Pipeline] }
      [Pipeline] // stage
      [Pipeline] }
      [Pipeline] // withEnv
      [Pipeline] }
      [Pipeline] // node
      [Pipeline] End of Pipeline
      Finished: SUCCESS
      

      *NOW*, if you need a FilePath context, things explode unpredictably at you:

      pipeline {
          agent any
          environment {
              TONE = sh('ls -lah')
              
          }
          stages {
              stage('At the tone') {
                  steps {
                      sh 'printenv | grep -i tone'
                  }
              }
          }
      }
      
      Started by user admin
      [Pipeline] node
      Running on master in /var/jenkins_home/workspace/steps-elsewhere
      [Pipeline] {
      [Pipeline] sh
      [steps-elsewhere] Running shell script
      [Pipeline] }
      [Pipeline] // node
      [Pipeline] End of Pipeline
      an exception which occurred:
      	in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
      	in object com.cloudbees.groovy.cps.impl.LoopBlockScopeEnv@2cf34a5c
      	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
      	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@75e8388c
      	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
      	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@4db43058
      	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
      	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@432f4393
      	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
      	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@7f50ec1c
      	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
      	in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@6adb8d12
      	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
      	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@30787673
      	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
      	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@4b57de8a
      	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
      	in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@257bd5f6
      	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
      	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@1605132a
      	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
      	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@441738b4
      	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
      	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@345d93a
      	in field com.cloudbees.groovy.cps.Continuable.e
      	in object org.jenkinsci.plugins.workflow.cps.SandboxContinuable@1a453105
      	in field org.jenkinsci.plugins.workflow.cps.CpsThread.program
      	in object org.jenkinsci.plugins.workflow.cps.CpsThread@70372da2
      	in field org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.threads
      	in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@3eae7274
      	in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@3eae7274
      Caused: java.io.NotSerializableException: java.util.TreeMap$Entry
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860)
      	at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)
      	at org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56)
      	at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50)
      	at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179)
      	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344)
      	at java.util.HashMap.internalWriteEntries(HashMap.java:1785)
      	at java.util.HashMap.writeObject(HashMap.java:1362)
      	at sun.reflect.GeneratedMethodAccessor72.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:273)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:976)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)
      	at org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56)
      	at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50)
      	at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179)
      	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344)
      	at java.util.TreeMap.writeObject(TreeMap.java:2438)
      	at sun.reflect.GeneratedMethodAccessor82.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:273)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:976)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
      	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
      	at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)
      	at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)
      	at org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.writeObject(RiverWriter.java:140)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:458)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:434)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgramIfPossible(CpsThreadGroup.java:422)
      	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:362)
      	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:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:745)
      Finished: FAILURE
      

      So like, um, where can I use steps, and where can I not use them?

          [JENKINS-47238] So like, um, okay, this is weird, but like, um, are steps *supposed* to work in environment{}?

          Andrew Bayer added a comment -

          Good question, without a currently defined answer. I know, sucky response. We probably should inspect environment values for steps and reject them.

          Andrew Bayer added a comment - Good question, without a currently defined answer. I know, sucky response. We probably should inspect environment values for steps and reject them.

          R. Tyler Croy added a comment - - edited


          summons jamesdumay for a call on the field

          R. Tyler Croy added a comment - - edited summons jamesdumay for a call on the field

          Andrew Bayer added a comment -

          So the answer is, basically, yes. You might get bit if you try to do something in environment that requires an agent but you have agent none, but otherwise steps should just work.

          Andrew Bayer added a comment - So the answer is, basically, yes. You might get bit if you try to do something in environment that requires an agent but you have agent none , but otherwise steps should just work.

          R. Tyler Croy added a comment -

          To me this is not an acceptable resolution. This is still absolutely confusing from a user perspective, so I don't consider this resolved until we can find some way to educate the users on what is supposed to work where.

          If I'm supposed to be able to use steps in environment except in the agent none case, then I would expect that Pipeline would provide a useful error telling me as such.

          R. Tyler Croy added a comment - To me this is not an acceptable resolution. This is still absolutely confusing from a user perspective, so I don't consider this resolved until we can find some way to educate the users on what is supposed to work where. If I'm supposed to be able to use steps in environment except in the agent none case, then I would expect that Pipeline would provide a useful error telling me as such.

          Andrew Bayer added a comment -

          Fair enough, though I'm honestly not sure if I can determine that ahead of time well enough. Lemme think on it.

          Andrew Bayer added a comment - Fair enough, though I'm honestly not sure if I can determine that ahead of time well enough. Lemme think on it.

          trejkaz added a comment -

          The error I'm seeing looks similar. I'm not entirely sure what is wrong in the build, but the code calls step() and then performs some additional logic below it. Is custom logic after a step banned?

           

          an exception which occurred:
          	in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@2754e0b5
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@ddf2b5c
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@7e43aed1
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@47dafbb0
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@13aecc18
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3bbb3dc7
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@6c2677d7
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@473cac18
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.LoopBlockScopeEnv@16894e35
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3fc927ff
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@3e226c25
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3c88a228
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@53c68650
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@1c6604d
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3a6719ed
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@2019e71f
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@553f6ff
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@57520747
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@1e06746a
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@53e3982d
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.TryBlockEnv@5190686a
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@46f1fd90
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@73ec835f
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@4d47ab25
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@6183ddb
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@4441eaaf
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3ed0a097
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@7138594b
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@66659b1a
          	in field com.cloudbees.groovy.cps.Continuable.e
          	in object org.jenkinsci.plugins.workflow.cps.SandboxContinuable@5cf0b901
          	in field org.jenkinsci.plugins.workflow.cps.CpsThread.program
          	in object org.jenkinsci.plugins.workflow.cps.CpsThread@20a51f90
          	in field org.jenkinsci.plugins.workflow.cps.CpsBodyExecution.thread
          	in object org.jenkinsci.plugins.workflow.cps.CpsBodyExecution@64b4249a
          	in field org.jenkinsci.plugins.workflow.steps.TimeoutStepExecution.body
          	in object org.jenkinsci.plugins.workflow.steps.TimeoutStepExecution@38f88e98
          	in field org.jenkinsci.plugins.workflow.cps.CpsThread.step
          	in object org.jenkinsci.plugins.workflow.cps.CpsThread@7e6bc5f1
          	in field org.jenkinsci.plugins.workflow.cps.CpsBodyExecution.thread
          	in object org.jenkinsci.plugins.workflow.cps.CpsBodyExecution@273fbce9
          	in field org.jenkinsci.plugins.workflow.cps.CpsBodyExecution$SuccessAdapter.this$0
          	in object org.jenkinsci.plugins.workflow.cps.CpsBodyExecution$SuccessAdapter@1ea93e20
          	in field com.cloudbees.groovy.cps.impl.CallEnv.returnAddress
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@6b1ecfce
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.TryBlockEnv@6c5aaea2
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@6bdf2225
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@4e7c1a80
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@4b6d0702
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.TryBlockEnv@6fb8df25
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@6768ffab
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@3a57f86f
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@30d29464
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@6e3cdc87
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@51f1826c
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@8a045f4
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@d5a6d41
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@60d8c545
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@56cc0e27
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@57ef9680
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@7dbf5fe3
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@2d2a1f37
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3cb38a58
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.LoopBlockScopeEnv@38cb2cee
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@6c4b7af7
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@186de696
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3919916e
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@9c99bc5
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@2a7bd531
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@537e557e
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@69fb2379
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@1c484aee
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3491d16e
          	in field com.cloudbees.groovy.cps.impl.CallEnv.caller
          	in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@3b597cdc
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@10bcfd1a
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@72465014
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.TryBlockEnv@4c6f2bfe
          	in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
          	in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@1ea6bd0c
          	in field com.cloudbees.groovy.cps.impl.CpsClosureDef.capture
          	in object com.cloudbees.groovy.cps.impl.CpsClosureDef@66340a73
          	in field com.cloudbees.groovy.cps.impl.CpsClosure.def
          	in object org.jenkinsci.plugins.workflow.cps.CpsClosure2@2ae96b2c
          	in field org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.closures
          	in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@744f884b
          	in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@744f884b
          Caused: java.io.NotSerializableException: hudson.tasks.junit.TestResultAction
          	at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860)
                  ...

          trejkaz added a comment - The error I'm seeing looks similar. I'm not entirely sure what is wrong in the build, but the code calls step() and then performs some additional logic below it. Is custom logic after a step banned?   an exception which occurred: in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@2754e0b5 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@ddf2b5c in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@7e43aed1 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@47dafbb0 in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@13aecc18 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3bbb3dc7 in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@6c2677d7 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@473cac18 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.LoopBlockScopeEnv@16894e35 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3fc927ff in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@3e226c25 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3c88a228 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@53c68650 in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@1c6604d in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3a6719ed in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@2019e71f in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@553f6ff in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@57520747 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@1e06746a in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@53e3982d in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.TryBlockEnv@5190686a in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@46f1fd90 in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@73ec835f in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@4d47ab25 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@6183ddb in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@4441eaaf in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3ed0a097 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@7138594b in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@66659b1a in field com.cloudbees.groovy.cps.Continuable.e in object org.jenkinsci.plugins.workflow.cps.SandboxContinuable@5cf0b901 in field org.jenkinsci.plugins.workflow.cps.CpsThread.program in object org.jenkinsci.plugins.workflow.cps.CpsThread@20a51f90 in field org.jenkinsci.plugins.workflow.cps.CpsBodyExecution.thread in object org.jenkinsci.plugins.workflow.cps.CpsBodyExecution@64b4249a in field org.jenkinsci.plugins.workflow.steps.TimeoutStepExecution.body in object org.jenkinsci.plugins.workflow.steps.TimeoutStepExecution@38f88e98 in field org.jenkinsci.plugins.workflow.cps.CpsThread.step in object org.jenkinsci.plugins.workflow.cps.CpsThread@7e6bc5f1 in field org.jenkinsci.plugins.workflow.cps.CpsBodyExecution.thread in object org.jenkinsci.plugins.workflow.cps.CpsBodyExecution@273fbce9 in field org.jenkinsci.plugins.workflow.cps.CpsBodyExecution$SuccessAdapter.this$0 in object org.jenkinsci.plugins.workflow.cps.CpsBodyExecution$SuccessAdapter@1ea93e20 in field com.cloudbees.groovy.cps.impl.CallEnv.returnAddress in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@6b1ecfce in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.TryBlockEnv@6c5aaea2 in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@6bdf2225 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@4e7c1a80 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@4b6d0702 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.TryBlockEnv@6fb8df25 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@6768ffab in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@3a57f86f in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@30d29464 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@6e3cdc87 in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@51f1826c in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@8a045f4 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@d5a6d41 in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@60d8c545 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@56cc0e27 in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@57ef9680 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@7dbf5fe3 in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@2d2a1f37 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3cb38a58 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.LoopBlockScopeEnv@38cb2cee in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@6c4b7af7 in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.ClosureCallEnv@186de696 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3919916e in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@9c99bc5 in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@2a7bd531 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@537e557e in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@69fb2379 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@1c484aee in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3491d16e in field com.cloudbees.groovy.cps.impl.CallEnv.caller in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@3b597cdc in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@10bcfd1a in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@72465014 in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.TryBlockEnv@4c6f2bfe in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@1ea6bd0c in field com.cloudbees.groovy.cps.impl.CpsClosureDef.capture in object com.cloudbees.groovy.cps.impl.CpsClosureDef@66340a73 in field com.cloudbees.groovy.cps.impl.CpsClosure.def in object org.jenkinsci.plugins.workflow.cps.CpsClosure2@2ae96b2c in field org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.closures in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@744f884b in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@744f884b Caused: java.io.NotSerializableException: hudson.tasks.junit.TestResultAction at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860) ...

            Unassigned Unassigned
            rtyler R. Tyler Croy
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: