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

"dir" fails to use existing directory owned by root

    • Icon: Improvement Improvement
    • Resolution: Unresolved
    • Icon: Minor Minor
    • durable-task-plugin
    • None

      Now that -JENKINS-40925- is resolved, and the dir command works with the kubernetes-plugin, I found the dir and ws commands fail to use existing directories if they're owned by root while using the kubernetes-plugin.

       

      Example:

      podTemplate(label: "test", containers: [
          containerTemplate(name: 'golang', image: "golang:1.8", ttyEnabled: true, command: 'cat'
          )
      ]) {
          node("test") {
              stage("mk build path") {
                  container(name: "golang") {
                      sh "ls -al /go/src"
                      sh "mkdir -p /go/src/github.com/"
                  }
              }
              stage("use build path") {
                  container(name: "golang") {
                      sh "ls -al /go/src/github.com/"
                      
                      //fails
                      dir("/go/src/github.com/") {
                          sh "pwd"
                      }
                  }
              }
          }
      }

      Maybe the actual same problem reported here: JENKINS-45549 just with specific k8s steps to reproduce

       

      + ls -al /go/src
      total 8
      drwxrwxrwx 2 root root 4096 Jul 26 05:14 .
      drwxrwxrwx 4 root root 4096 Aug  2 16:05 ..
      + mkdir -p /go/src/github.com/
      + ls -al /go/src/github.com/
      total 8
      drwxr-xr-x 2 root root 4096 Aug  8 08:24 .
      drwxrwxrwx 1 root root 4096 Aug  8 08:24 ..
      [Pipeline] dir
      Running in /go/src/github.com
      ....
      java.io.IOException: Failed to mkdirs: /go/src/github.com
      	at hudson.FilePath.mkdirs(FilePath.java:1170)
      	at org.jenkinsci.plugins.durabletask.FileMonitoringTask$FileMonitoringController.<init>(FileMonitoringTask.java:113)
      	at org.jenkinsci.plugins.durabletask.BourneShellScript$ShellController.<init>(BourneShellScript.java:167)
      	at org.jenkinsci.plugins.durabletask.BourneShellScript$ShellController.<init>(BourneShellScript.java:161)
      	at org.jenkinsci.plugins.durabletask.BourneShellScript.launchWithCookie(BourneShellScript.java:90)
      	at org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.java:64)
      	at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.start(DurableTaskStep.java:167)
      	at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:224)
      	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.GeneratedMethodAccessor1117.invoke(Unknown Source)
      	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:1218)
      	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1027)
      	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:151)
      	at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:21)
      	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:115)
      	at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:149)
      	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:146)
      	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
      	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
      	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
      	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
      	at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:123)
      	at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:16)
      	at WorkflowScript.run(WorkflowScript:17)
      	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.GeneratedMethodAccessor356.invoke(Unknown Source)
      	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.ConstantBlock.eval(ConstantBlock.java:21)
      	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:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at java.lang.Thread.run(Thread.java:745)
      Finished: FAILURE
       

       

          [JENKINS-46055] "dir" fails to use existing directory owned by root

          using version 0.12 of the plugin?

          My guess is that dir is running in the context of the jnlp container and because /go is outside workingDir is not shared across all containers.
          you can change the workingDir in the template to be /go and it would probably work

          Carlos Sanchez added a comment - using version 0.12 of the plugin? My guess is that dir is running in the context of the jnlp container and because /go is outside workingDir is not shared across all containers. you can change the workingDir in the template to be /go and it would probably work

          J Knurek added a comment -

          seems that it's the same but different problem when setting the workingDir to be /go:

          podTemplate(label: 'test', containers: [
              containerTemplate(name: 'golang', image: "golang:1.8", workingDir: "/go", ttyEnabled: true, command: 'cat'
              )
          ]) {
              node('test') {
                  stage('mk build path') {
                 ......
           

          results in a failure to create the working directory:

          [Pipeline] podTemplate
          [Pipeline] {
          [Pipeline] node
          Running on jenkins-slave-n6rlc-wcfwj in /go/workspace/test-dir-example
          [Pipeline] {
          [Pipeline] stage
          [Pipeline] { (mk build path)
          [Pipeline] container
          [Pipeline] {
          [Pipeline] sh
          [Pipeline] }
          [Pipeline] // container
          [Pipeline] }
          [Pipeline] // stage
          [Pipeline] }
          [Pipeline] // node
          [Pipeline] }
          [Pipeline] // podTemplate
          [Pipeline] End of Pipeline
          java.io.IOException: Failed to mkdirs: /go/workspace/test-dir-example
          	at hudson.FilePath.mkdirs(FilePath.java:1171)
          

          J Knurek added a comment - seems that it's the same but different problem when setting the workingDir to be /go: podTemplate(label: 'test' , containers: [ containerTemplate(name: 'golang' , image: "golang:1.8" , workingDir: "/go" , ttyEnabled: true , command: 'cat' ) ]) { node( 'test' ) { stage( 'mk build path' ) { ......   results in a failure to create the working directory: [Pipeline] podTemplate [Pipeline] { [Pipeline] node Running on jenkins-slave-n6rlc-wcfwj in /go/workspace/test-dir-example [Pipeline] { [Pipeline] stage [Pipeline] { (mk build path) [Pipeline] container [Pipeline] { [Pipeline] sh [Pipeline] } [Pipeline] // container [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // node [Pipeline] } [Pipeline] // podTemplate [Pipeline] End of Pipeline java.io.IOException: Failed to mkdirs: /go/workspace/test-dir-example at hudson.FilePath.mkdirs(FilePath.java:1171)

          J Knurek added a comment - - edited

          I noticed that now in the README for this plugin there is an example of using go path: https://github.com/jenkinsci/kubernetes-plugin#container-group-support

          This is not the proper way to manage this, because every single command will require:

          cd /go/src/github.com/hashicorp/terraform &&

           

           

          This bug is still a problem in version 1.1

           

          J Knurek added a comment - - edited I noticed that now in the README for this plugin there is an example of using go path:  https://github.com/jenkinsci/kubernetes-plugin#container-group-support This is not the proper way to manage this, because every single command will require: cd /go/src/github.com/hashicorp/terraform &&     This bug is still a problem in version 1.1  

          J Knurek added a comment -

          The error/stacktrace has gotten even worse with this issue:

          Jenkins ver. 2.121.2

          Kubernetes plugin 1.10.1 

           

          podTemplate(label: "example-dir", containers: [
              containerTemplate(name: 'golang', image: "golang:1.10.0", ttyEnabled: true, command: 'cat'),
          ]) {
              node("example-dir") {
                  container(name: "golang") {
                      stage("test dir"){
                          sh "ls -al /go/src/"
                          dir("/go/src"){
                              sh "ls -al ."
                              echo "------ already failed -----"
                          }
                      }
                  }
              }
          }
          

           

          Also:   hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from 172.21.3.20/172.21.3.20:51566
          		at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1741)
          		at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:357)
          		at hudson.remoting.Channel.call(Channel.java:955)
          		at hudson.FilePath.act(FilePath.java:1036)
          		at hudson.FilePath.act(FilePath.java:1025)
          		at hudson.FilePath.mkdirs(FilePath.java:1208)
          		at org.jenkinsci.plugins.durabletask.FileMonitoringTask$FileMonitoringController.<init>(FileMonitoringTask.java:120)
          		at org.jenkinsci.plugins.durabletask.BourneShellScript$ShellController.<init>(BourneShellScript.java:198)
          		at org.jenkinsci.plugins.durabletask.BourneShellScript$ShellController.<init>(BourneShellScript.java:190)
          		at org.jenkinsci.plugins.durabletask.BourneShellScript.launchWithCookie(BourneShellScript.java:111)
          		at org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.java:71)
          		at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.start(DurableTaskStep.java:176)
          		at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:229)
          		at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:153)
          		at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:122)
          		at sun.reflect.GeneratedMethodAccessor2848.invoke(Unknown Source)
          		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:157)
          		at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23)
          		at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:133)
          		at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155)
          		at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:159)
          		at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:129)
          		at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:129)
          		at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:129)
          		at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:129)
          		at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:129)
          		at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
          		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.GeneratedMethodAccessor99.invoke(Unknown Source)
          		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.ConstantBlock.eval(ConstantBlock.java:21)
          		at com.cloudbees.groovy.cps.Next.step(Next.java:83)
          		at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174)
          		at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)
          		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:163)
          		at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$101(SandboxContinuable.java:34)
          		at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.lambda$run0$0(SandboxContinuable.java:59)
          		at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)
          		at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:58)
          		at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)
          		at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:332)
          		at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:83)
          		at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:244)
          		at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:232)
          		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:131)
          		at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
          		at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
          		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)
          java.nio.file.AccessDeniedException: /go
          	at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
          	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
          	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
          	at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384)
          	at java.nio.file.Files.createDirectory(Files.java:674)
          	at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781)
          	at java.nio.file.Files.createDirectories(Files.java:767)
          	at hudson.FilePath.mkdirs(FilePath.java:3098)
          	at hudson.FilePath.access$900(FilePath.java:209)
          	at hudson.FilePath$Mkdirs.invoke(FilePath.java:1216)
          	at hudson.FilePath$Mkdirs.invoke(FilePath.java:1212)
          	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2913)
          	at hudson.remoting.UserRequest.perform(UserRequest.java:212)
          	at hudson.remoting.UserRequest.perform(UserRequest.java:54)
          	at hudson.remoting.Request$2.run(Request.java:369)
          	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
          	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 hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:93)
          	at java.lang.Thread.run(Thread.java:748)
          Finished: FAILURE
          

          J Knurek added a comment - The error/stacktrace has gotten even worse with this issue: Jenkins ver. 2.121.2 Kubernetes plugin 1.10.1    podTemplate(label: "example-dir" , containers: [ containerTemplate(name: 'golang' , image: "golang:1.10.0" , ttyEnabled: true , command: 'cat' ), ]) { node( "example-dir" ) { container(name: "golang" ) { stage( "test dir" ){ sh "ls -al /go/src/" dir( "/go/src" ){ sh "ls -al ." echo "------ already failed -----" } } } } }   Also: hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from 172.21.3.20/172.21.3.20:51566 at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1741) at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:357) at hudson.remoting.Channel.call(Channel.java:955) at hudson.FilePath.act(FilePath.java:1036) at hudson.FilePath.act(FilePath.java:1025) at hudson.FilePath.mkdirs(FilePath.java:1208) at org.jenkinsci.plugins.durabletask.FileMonitoringTask$FileMonitoringController.<init>(FileMonitoringTask.java:120) at org.jenkinsci.plugins.durabletask.BourneShellScript$ShellController.<init>(BourneShellScript.java:198) at org.jenkinsci.plugins.durabletask.BourneShellScript$ShellController.<init>(BourneShellScript.java:190) at org.jenkinsci.plugins.durabletask.BourneShellScript.launchWithCookie(BourneShellScript.java:111) at org.jenkinsci.plugins.durabletask.FileMonitoringTask.launch(FileMonitoringTask.java:71) at org.jenkinsci.plugins.workflow.steps.durable_task.DurableTaskStep$Execution.start(DurableTaskStep.java:176) at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:229) at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:153) at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:122) at sun.reflect.GeneratedMethodAccessor2848.invoke(Unknown Source) 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:157) at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:133) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:155) at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:159) at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:129) at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:129) at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:129) at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:129) at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:129) at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17) 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.GeneratedMethodAccessor99.invoke(Unknown Source) 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.ConstantBlock.eval(ConstantBlock.java:21) at com.cloudbees.groovy.cps.Next.step(Next.java:83) at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174) at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163) 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:163) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$101(SandboxContinuable.java:34) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.lambda$run0$0(SandboxContinuable.java:59) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:58) at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:332) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:83) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:244) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:232) 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:131) at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59) 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) java.nio.file.AccessDeniedException: /go at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) at sun.nio.fs.UnixFileSystemProvider.createDirectory(UnixFileSystemProvider.java:384) at java.nio.file.Files.createDirectory(Files.java:674) at java.nio.file.Files.createAndCheckIsDirectory(Files.java:781) at java.nio.file.Files.createDirectories(Files.java:767) at hudson.FilePath.mkdirs(FilePath.java:3098) at hudson.FilePath.access$900(FilePath.java:209) at hudson.FilePath$Mkdirs.invoke(FilePath.java:1216) at hudson.FilePath$Mkdirs.invoke(FilePath.java:1212) at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2913) at hudson.remoting.UserRequest.perform(UserRequest.java:212) at hudson.remoting.UserRequest.perform(UserRequest.java:54) at hudson.remoting.Request$2.run(Request.java:369) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) 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 hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:93) at java.lang. Thread .run( Thread .java:748) Finished: FAILURE

          Jesse Glick added a comment -

          Not a defect. You cannot run sh scripts from a directory to which you lack write access. Possibly FileMonitorController could be improved to fall back to a system temp directory of some kind for the durable task control directory, but at best you would be able to run read-only commands, which seems of limited value. Obviously if there is something you want to run with such a directory as your CWD, you can do so trivially via

          sh 'cd /go/src/github.com; ls -al'
          

          Jesse Glick added a comment - Not a defect. You cannot run sh scripts from a directory to which you lack write access. Possibly FileMonitorController could be improved to fall back to a system temp directory of some kind for the durable task control directory, but at best you would be able to run read-only commands, which seems of limited value. Obviously if there is something you want to run with such a directory as your CWD, you can do so trivially via sh 'cd /go/src/github.com; ls -al'

            Unassigned Unassigned
            jknurek J Knurek
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated: