@NonCPS def printException(err){ message = err.getMessage() stacktrace = err.getStackTrace() stacktrace.each { stackElem -> message += "\n" + stackElem.toString() } print message}
def batch(platform){ try { if (isUnix()) { sh script:"echo running shell script" } else { bat script:"echo running batch script" } echo "Batch file ran ok" } catch (Exception err) { echo "Failed to run batch file on $platform" printException(err) } }
def dirStep(platform){ try { dir ("mySubDirectory") { echo "In subdirectory" writeFile file:"mySubFile.txt", text:"this is a file in $platform" } } catch (Exception err) { echo "Failed enter subdirectory on $platform" printException(err) } }
def writeFileStep(platform){ try { writeFile file:"myFile.txt", text:"this is a file in $platform" echo "wrote File on $platform" } catch (Exception err) { echo "Failed to create file on $platform" printException(err) } }
def testUnstash(platform){ try { unstash "myStash" echo "instashed on $platform" } catch (Exception err) { echo "Failed to unstash on $platform" printException(err) } }
def runTests(nodeID){ node (nodeID) { batch(nodeID) writeFileStep(nodeID) dirStep(nodeID) testUnstash(nodeID) }}
stage("testing"){ node ("master") { writeFile file:"toStash.txt",text:"Testing stashing and unstashing" stash name:"myStash", include:"toStash.txt" } runTests("master") runTests("XCode") runTests("VS2013")}
Started by user Jonathan Hodgson
[Pipeline] stage
[Pipeline] { (testing)
[Pipeline] node
Running on master in /var/lib/jenkins/workspace/pipeline-test2
[Pipeline] {
[Pipeline] writeFile
[Pipeline] stash
Stashed 3 file(s)
[Pipeline] }
[Pipeline] // node
[Pipeline] node
Running on master in /var/lib/jenkins/workspace/pipeline-test2
[Pipeline] {
[Pipeline] isUnix
[Pipeline] sh
[pipeline-test2] Running shell script
+ echo running shell script
running shell script
[Pipeline] echo
Batch file ran ok
[Pipeline] writeFile
[Pipeline] echo
wrote File on master
[Pipeline] dir
Running in /var/lib/jenkins/workspace/pipeline-test2/mySubDirectory
[Pipeline] {
[Pipeline] echo
In subdirectory
[Pipeline] writeFile
[Pipeline] }
[Pipeline] // dir
[Pipeline] unstash
[Pipeline] echo
instahsed on master
[Pipeline] }
[Pipeline] // node
[Pipeline] node
Running on iMac in /Users/jon/jenkins/workspace/pipeline-test2
[Pipeline] {
[Pipeline] isUnix
[Pipeline] sh
[pipeline-test2] Running shell script
+ echo running shell script
running shell script
[Pipeline] echo
Batch file ran ok
[Pipeline] writeFile
[Pipeline] echo
wrote File on XCode
[Pipeline] dir
Running in /Users/jon/jenkins/workspace/pipeline-test2/mySubDirectory
[Pipeline] {
[Pipeline] echo
In subdirectory
[Pipeline] writeFile
[Pipeline] }
[Pipeline] // dir
[Pipeline] unstash
[Pipeline] echo
instahsed on XCode
[Pipeline] }
[Pipeline] // node
[Pipeline] node
Running on Asus K51 in C:\Jenkins\workspace\pipeline-test2
[Pipeline] {
[Pipeline] isUnix
[Pipeline] bat
[Pipeline] echo
Failed to run batch file on VS2013
[Pipeline] echo
Failed to mkdirs: C:\Jenkins\workspace\pipeline-test2@tmp\durable-97381953
hudson.FilePath.mkdirs(FilePath.java:1169)
org.jenkinsci.plugins.durabletask.FileMonitoringTask$FileMonitoringController.<init>(FileMonitoringTask.java:101)
org.jenkinsci.plugins.durabletask.WindowsBatchScript$BatchController.<init>(WindowsBatchScript.java:94)
org.jenkinsci.plugins.durabletask.WindowsBatchScript$BatchController.<init>(WindowsBatchScript.java:92)
org.jenkinsci.plugins.durabletask.WindowsBatchScript.doLaunch(WindowsBatchScript.java:60)
org.jenkinsci.plugins.durabletask.FileMonitoringTask.launchWithCookie(FileMonitoringTask.java:66)
org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.java:61)
org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.start(DurableTaskStep.java:158)
org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:184)
org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:126)
org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:18)
WorkflowScript.batch(WorkflowScript:20)
WorkflowScript.runTests(WorkflowScript:77)
___cps.transform___(Native Method)
com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)
com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)
com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82)
sun.reflect.GeneratedMethodAccessor365.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
com.cloudbees.groovy.cps.impl.CollectionLiteralBlock$ContinuationImpl.dispatch(CollectionLiteralBlock.java:55)
com.cloudbees.groovy.cps.impl.CollectionLiteralBlock$ContinuationImpl.item(CollectionLiteralBlock.java:45)
sun.reflect.GeneratedMethodAccessor385.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
com.cloudbees.groovy.cps.Next.step(Next.java:58)
com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154)
org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:163)
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:324)
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:78)
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:236)
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:224)
org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:63)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745)
[Pipeline] writeFile
[Pipeline] echo
wrote File on VS2013
[Pipeline] dir
Running in C:\Jenkins\workspace\pipeline-test2\mySubDirectory
[Pipeline] {
[Pipeline] echo
In subdirectory
[Pipeline] writeFile
[Pipeline] }
[Pipeline] // dir
[Pipeline] unstash
[Pipeline] echo
instahsed on VS2013
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // stage
[Pipeline] End of Pipeline
Finished: SUCCESS
Ok, adding to the confusion...
Failed to mkdirs: C:\Jenkins2\workspace\pipeline-test2
hudson.FilePath.mkdirs(FilePath.java:1169)
org.jenkinsci.plugins.durabletask.FileMonitoringTask$FileMonitoringController.<init>(FileMonitoringTask.java:99)
org.jenkinsci.plugins.durabletask.WindowsBatchScript$BatchController.<init>(WindowsBatchScript.java:94)
org.jenkinsci.plugins.durabletask.WindowsBatchScript$BatchController.<init>(WindowsBatchScript.java:92)
org.jenkinsci.plugins.durabletask.WindowsBatchScript.doLaunch(WindowsBatchScript.java:60)
org.jenkinsci.plugins.durabletask.FileMonitoringTask.launchWithCookie(FileMonitoringTask.java:66)
org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.java:61)
Failed to mkdirs: C:\Jenkins2\workspace\pipeline-test2@tmp\durable-e94accb0
hudson.FilePath.mkdirs(FilePath.java:1169)
org.jenkinsci.plugins.durabletask.FileMonitoringTask$FileMonitoringController.<init>(FileMonitoringTask.java:101)
org.jenkinsci.plugins.durabletask.WindowsBatchScript$BatchController.<init>(WindowsBatchScript.java:94)
org.jenkinsci.plugins.durabletask.WindowsBatchScript$BatchController.<init>(WindowsBatchScript.java:92)
org.jenkinsci.plugins.durabletask.WindowsBatchScript.doLaunch(WindowsBatchScript.java:60)
org.jenkinsci.plugins.durabletask.FileMonitoringTask.launchWithCookie(FileMonitoringTask.java:66)
org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.java:61)
org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.start(DurableTaskStep.java:158)
Is this a file system that doesn't like the @ character?