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)