-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Minor
-
Component/s: docker-workflow-plugin
-
None
-
Environment:jenkins 2.287
docker-plugin: 1.2.2
docker-workflow: 1.2.6
I'm trying to do something like this:
node {
stage('reproduce') {
sh """
echo '1'
printenv PATH
echo "$PATH"
"""
docker.image('python:3.6.4-slim').inside {
sh """
echo '2'
printenv PATH
echo "$PATH"
"""
withEnv(["PATH=$PATH:/my/custom/path"]) {
sh """
echo '3'
printenv PATH
echo "$PATH"
"""
}
}
}
}
sh (1) gives me:
+ printenv PATH /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + echo /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
all is good so far
sh (2) gives me:
+ printenv PATH /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + echo /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
which is already confusing
sh (3) gives:
+ printenv PATH /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + echo /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/my/custom/path /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/my/custom/path
Â
I have couple of questions about this:
- why printenv and echo in sh(2) show different results? sounds like printenv prints original env which comes from docker image while echo prints value from host jenkins.
- why withEnv which is executed inside docker container does not modify docker's PATH but modifies Jenkins's PATH.