-
Bug
-
Resolution: Fixed
-
Critical
The "dir('foo')" step inside "docker.image('my-image').inside" creates a directory "foo@tmp" instead of changing the current directory as expected.
In the test below, ">>> SHOULD LS THE foo DIR" is showing an "ls" is the parent dir instead of changing to the "foo" dir and we see a dir "foo@tmp"Â that have been created.
This problem is specific to "docker.image('my-image').inside", it does not happen with a standard "node".
docker.image('cloudbees/java-build-tools:0.0.7.1').inside { sh 'rm -rf foo*' // RE INIT TEST println '>>> LS THE PARENT DIR' sh 'mkdir -p foo/bar' sh 'ls -al' dir('foo') { println '>>> SHOULD LS THE foo DIR' sh 'ls -al' } }
Started by user admin
[Pipeline] Allocate node : Start
Running on jenkins-agent.beesshop.org in /home/ubuntu/jenkins-aws-home/workspace/tests/test-change-dir-4
[Pipeline] node {
[Pipeline] sh
[test-change-dir-4] Running shell script
+ docker inspect -f . cloudbees/java-build-tools:0.0.7.1
.
[Pipeline] Run build steps inside a Docker container : Start
$ docker run -t -d -u 1000:1000 -w /home/ubuntu/jenkins-aws-home/workspace/tests/test-change-dir-4 -v /home/ubuntu/jenkins-aws-home/workspace/tests/test-change-dir-4:/home/ubuntu/jenkins-aws-home/workspace/tests/test-change-dir-4:rw -v /home/ubuntu/jenkins-aws-home/workspace/tests/test-change-dir-4@tmp:/home/ubuntu/jenkins-aws-home/workspace/tests/test-change-dir-4@tmp:rw -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** cloudbees/java-build-tools:0.0.7.1 cat
[Pipeline] withDockerContainer {
[Pipeline] sh
[test-change-dir-4] Running shell script
+ rm -rf foo foo@tmp
[Pipeline] echo
>>> LS THE PARENT DIR
[Pipeline] sh
[test-change-dir-4] Running shell script
+ mkdir -p foo/bar
[Pipeline] sh
[test-change-dir-4] Running shell script
+ ls -al
total 12
drwxrwxr-x 3 jenkins jenkins 4096 Mar 13 21:50 .
drwxr-xr-x 4 root root 4096 Mar 13 21:50 ..
drwxr-xr-x 3 jenkins jenkins 4096 Mar 13 21:50 foo
[Pipeline] Change current directory : Start
Running in /home/ubuntu/jenkins-aws-home/workspace/tests/test-change-dir-4/foo
[Pipeline] dir {
[Pipeline] echo
>>> SHOULD LS THE foo DIR
[Pipeline] sh
[foo] Running shell script
+ ls -al
total 16
drwxrwxr-x 4 jenkins jenkins 4096 Mar 13 21:50 .
drwxr-xr-x 4 root root 4096 Mar 13 21:50 ..
drwxr-xr-x 3 jenkins jenkins 4096 Mar 13 21:50 foo
drwxrwxr-x 3 jenkins jenkins 4096 Mar 13 21:50 foo@tmp
[Pipeline] } //dir
[Pipeline] Change current directory : End
- is blocked by
-
JENKINS-41474 docker.inside to rely on runC
-
- Open
-
- is blocking
-
JENKINS-35518 dir() does not change directory when used insider docker.inside block
-
- Closed
-
- is duplicated by
-
JENKINS-35406 Image.inside overrides working directory
-
- Resolved
-
-
JENKINS-55351 docker.build().inside() not run "inside" in Jenkins within Docker
-
- Closed
-
- is related to
-
JENKINS-40925 "dir" context is not honored by "sh" step
-
- Closed
-
- relates to
-
JENKINS-38331 per stage agent directives
-
- Closed
-
-
JENKINS-47305 Dir Step doesn't work inside container step when dir is outside the workspace
-
- Resolved
-
- links to