-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
Jenkins 2.89.3
docker-workflow 1.14
I'm trying to set a custom PATH in a docker.image('...').inside block.
For example, I would like to be able to do something like this:
node('docker') { docker.image('some-build-image').inside { sh 'echo $PATH' withEnv(['PATH+MAVEN=/opt/maven-3.3.3/bin']) { sh 'echo $PATH' sh 'mvn --version' } } }
But the PATH environment variable inside the docker image does not get updated - the two echo statements produce exactly the same output, and the Maven command fails with the following error: "mvn: command not found"
I see that as a result of #JENKINS-43590, the PATH env var is no longer passed from the host to the docker container (which seems sensible, as the environments can be different), but I feel it should still possible to manipulate the PATH variable inside the docker container somehow, e.g by using withEnv. Even a workaround like running the shell step sh 'export PATH=$PATH:/opt/maven-3.3.3/bin' does not have the required outcome.
- is duplicated by
-
JENKINS-53025 withEnv PATH+ syntax doesn't work in docker.image
-
- Closed
-
- is related to
-
JENKINS-66605 Declarative pipeline with Docker image overrides PATH inside container on Windows
-
- Open
-
- relates to
-
JENKINS-43590 docker.inside() breaks container environment.
-
- Open
-
Avoid doing this. If you cannot just define an image which has the desired PATH to begin with, better to avoid withDockerContainer and do whatever you need using sh 'docker …' directly.