You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@yetus.apache.org by "Sean Busbey (Jira)" <ji...@apache.org> on 2019/09/15 20:10:00 UTC
[jira] [Created] (YETUS-913) Docker mode pre-commit can't use
JAVA_HOME defined in dockerfile
Sean Busbey created YETUS-913:
---------------------------------
Summary: Docker mode pre-commit can't use JAVA_HOME defined in dockerfile
Key: YETUS-913
URL: https://issues.apache.org/jira/browse/YETUS-913
Project: Yetus
Issue Type: Bug
Components: Precommit
Affects Versions: 0.11.0, 0.10.0, 0.9.0
Reporter: Sean Busbey
Over in HBase we use different JDKs depending on the branch, due to our compatibility promises in major release lines. For test-patch runs, this changes the set of JDKs we install in each branch's Dockerfile.
While recently trying to chase down why we were getting JDK8 used to test a branch that's JDK7+, I realized that the docker bootstrapping _always_ overwrites the JAVA_HOME in the image with JAVA_HOME on the host. This includes when the host doesn't define a JAVA_HOME, effectively preventing a JAVA_HOME set by the image (either via ENV or by installing some package that sets it).
Workaround:
You can prevent this by replacing the {{docker_do_env_adds}} function in your personality. e.g. this version will only set JAVA_HOME in the docker instance if the host defines it. We then make sure all of our uses of test-patch unset JAVA_HOME before invocation.
{code}
# work around yetus overwriting JAVA_HOME from our docker image
function docker_do_env_adds
{
declare k
for k in "${DOCKER_EXTRAENVS[@]}"; do
if [[ "JAVA_HOME" == "${k}" ]]; then
if [ -n "${JAVA_HOME}" ]; then
DOCKER_EXTRAARGS+=("--env=JAVA_HOME=${JAVA_HOME}")
fi
else
DOCKER_EXTRAARGS+=("--env=${k}=${!k}")
fi
done
}
{code}
--
This message was sent by Atlassian Jira
(v8.3.2#803003)