From e8525008b2376dbd24d516a02a6cb54c758cb76b Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Fri, 13 Nov 2020 15:35:16 +0100 Subject: [PATCH] Move install-openjdk into main script, add check-environment --- .ci/build-pr.sh | 3 +- .ci/build.sh | 2 +- .ci/inc/install-openjdk.inc | 83 +++++++++++++++++++++++++++++ .ci/inc/regression-tester.inc | 5 +- .ci/install-openjdk.sh | 82 ---------------------------- .github/workflows/pull-requests.yml | 4 +- .github/workflows/pushes.yml | 3 -- 7 files changed, 91 insertions(+), 91 deletions(-) create mode 100644 .ci/inc/install-openjdk.inc delete mode 100755 .ci/install-openjdk.sh diff --git a/.ci/build-pr.sh b/.ci/build-pr.sh index 8aaea771d1..38ea0c6f41 100755 --- a/.ci/build-pr.sh +++ b/.ci/build-pr.sh @@ -1,13 +1,14 @@ #!/usr/bin/env bash source $(dirname $0)/inc/logger.inc +source $(dirname $0)/inc/install-openjdk.inc source $(dirname $0)/inc/regression-tester.inc source $(dirname $0)/inc/maven-dependencies.inc -source ${HOME}/java.env set -e #set -x +install_openjdk_setdefault 11 maven_dependencies_resolve log_group_start "Building with maven" diff --git a/.ci/build.sh b/.ci/build.sh index e4b8169a07..6b68291bc1 100755 --- a/.ci/build.sh +++ b/.ci/build.sh @@ -6,7 +6,6 @@ source $(dirname $0)/inc/sourceforge-api.inc source $(dirname $0)/inc/pmd-doc.inc source $(dirname $0)/inc/pmd-code-api.inc source $(dirname $0)/inc/regression-tester.inc -source ${HOME}/java.env set -e #set -x @@ -16,6 +15,7 @@ function pmd_ci_build_main() { pmd_ci_setup_gpg_key pmd_ci_setup_ssh + install_openjdk_setdefault 11 pmd_ci_build_setup_maven pmd_ci_build_setup_oraclejdk7 pmd_ci_build_setup_bundler diff --git a/.ci/inc/install-openjdk.inc b/.ci/inc/install-openjdk.inc new file mode 100644 index 0000000000..2a69ba6382 --- /dev/null +++ b/.ci/inc/install-openjdk.inc @@ -0,0 +1,83 @@ + +# needs: +# inc/logger + +# +# Downloads openjdk from AdoptOpenJDK by accessing the API. +# The API is documented at https://api.adoptopenjdk.net/swagger-ui/ +# + +function install_openjdk() { + OPENJDK_VERSION=$1 + log_group_start "Installing OpenJDK ${OPENJDK_VERSION}" + + case "$(uname)" in + Linux*) + JDK_OS=linux + COMPONENTS_TO_STRIP=1 # e.g. openjdk-11.0.3+7/bin/java + ;; + Darwin*) + JDK_OS=mac + COMPONENTS_TO_STRIP=3 # e.g. jdk-11.0.3+7/Contents/Home/bin/java + ;; + CYGWIN*|MINGW*) + JDK_OS=windows + ;; + *) + log_error "Unknown OS: $(uname)" + exit 1 + ;; + esac + + + DOWNLOAD_URL=$(curl --silent -X GET "https://api.adoptopenjdk.net/v3/assets/feature_releases/${OPENJDK_VERSION}/ga?architecture=x64&heap_size=normal&image_type=jdk&jvm_impl=hotspot&os=${JDK_OS}&page=0&page_size=1&project=jdk&sort_method=DEFAULT&sort_order=DESC&vendor=adoptopenjdk" \ + -H "accept: application/json" \ + | jq -r ".[0].binaries[0].package.link") + + OPENJDK_ARCHIVE=$(basename ${DOWNLOAD_URL}) + log_debug "Archive name: ${OPENJDK_ARCHIVE}" + + CACHE_DIR=${HOME}/.cache/openjdk + TARGET_DIR=${HOME}/openjdk${OPENJDK_VERSION} + + mkdir -p ${CACHE_DIR} + mkdir -p ${TARGET_DIR} + + if [ ! -e ${CACHE_DIR}/${OPENJDK_ARCHIVE} ]; then + log_info "Downloading from ${DOWNLOAD_URL} to ${CACHE_DIR}" + curl --location --output ${CACHE_DIR}/${OPENJDK_ARCHIVE} "${DOWNLOAD_URL}" + else + log_info "Skipped download, file ${CACHE_DIR}/${OPENJDK_ARCHIVE} already exists" + fi + + log_info "Extracting to ${TARGET_DIR}" + + case "$OPENJDK_ARCHIVE" in + *.zip) + 7z x ${CACHE_DIR}/${OPENJDK_ARCHIVE} -o${TARGET_DIR} + mv ${TARGET_DIR}/*/* ${TARGET_DIR}/ + ;; + *.tar.gz) + tar --extract --file ${CACHE_DIR}/${OPENJDK_ARCHIVE} -C ${TARGET_DIR} --strip-components=${COMPONENTS_TO_STRIP} + ;; + *) + log_error "Unknown filetype: ${OPENJDK_ARCHIVE}" + exit 1 + ;; + esac + + log_group_end +} + +function install_openjdk_setdefault() { + OPENJDK_VERSION=$1 + + install_openjdk $OPENJDK_VERSION + + log_info "Using OpenJDK ${OPENJDK_VERSION} as default" + TARGET_DIR=${HOME}/openjdk${OPENJDK_VERSION} + export JAVA_HOME="${TARGET_DIR}" + export PATH="${TARGET_DIR}/bin:${PATH}" + + java -version +} \ No newline at end of file diff --git a/.ci/inc/regression-tester.inc b/.ci/inc/regression-tester.inc index cb854ab421..2ac9290fb9 100644 --- a/.ci/inc/regression-tester.inc +++ b/.ci/inc/regression-tester.inc @@ -1,6 +1,7 @@ # # The functions here require the following scripts: -# inc/logger +# inc/logger.inc +# inc/install-openjdk.inc # # The functions here require the following environment variables: # PMD_SF_USER @@ -11,7 +12,7 @@ function regression_tester_setup_ci() { # install openjdk8 for pmd-regression-tests - .ci/install-openjdk.sh 8 + install_openjdk 8 gpg --batch --yes --decrypt --passphrase="GnxdjywUEPveyCD1RLiTd7t8CImnefYr" \ --output .ci/files/public-env .ci/files/public-env.gpg diff --git a/.ci/install-openjdk.sh b/.ci/install-openjdk.sh deleted file mode 100755 index e1359675a2..0000000000 --- a/.ci/install-openjdk.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env bash - -# -# Downloads openjdk from AdoptOpenJDK by accessing the API. -# The API is documented at https://api.adoptopenjdk.net/swagger-ui/ -# - -source $(dirname $0)/inc/logger.inc - -set -e - -case "$(uname)" in - Linux*) - JDK_OS=linux - COMPONENTS_TO_STRIP=1 # e.g. openjdk-11.0.3+7/bin/java - ;; - Darwin*) - JDK_OS=mac - COMPONENTS_TO_STRIP=3 # e.g. jdk-11.0.3+7/Contents/Home/bin/java - ;; - CYGWIN*|MINGW*) - JDK_OS=windows - ;; - *) - log_error "Unknown OS: $(uname)" - exit 1 - ;; -esac - - -OPENJDK_VERSION=$1 -DOWNLOAD_URL=$(curl --silent -X GET "https://api.adoptopenjdk.net/v3/assets/feature_releases/${OPENJDK_VERSION}/ga?architecture=x64&heap_size=normal&image_type=jdk&jvm_impl=hotspot&os=${JDK_OS}&page=0&page_size=1&project=jdk&sort_method=DEFAULT&sort_order=DESC&vendor=adoptopenjdk" \ - -H "accept: application/json" \ - | jq -r ".[0].binaries[0].package.link") - -OPENJDK_ARCHIVE=$(basename ${DOWNLOAD_URL}) -log_debug "Archive name: ${OPENJDK_ARCHIVE}" - -CACHE_DIR=${HOME}/.cache/openjdk -TARGET_DIR=${HOME}/openjdk${OPENJDK_VERSION} - -mkdir -p ${CACHE_DIR} -mkdir -p ${TARGET_DIR} - -if [ ! -e ${CACHE_DIR}/${OPENJDK_ARCHIVE} ]; then - log_info "Downloading from ${DOWNLOAD_URL} to ${CACHE_DIR}" - curl --location --output ${CACHE_DIR}/${OPENJDK_ARCHIVE} "${DOWNLOAD_URL}" -else - log_info "Skipped download, file ${CACHE_DIR}/${OPENJDK_ARCHIVE} already exists" -fi - -log_info "Extracting to ${TARGET_DIR}" - -case "$OPENJDK_ARCHIVE" in - *.zip) - 7z x ${CACHE_DIR}/${OPENJDK_ARCHIVE} -o${TARGET_DIR} - mv ${TARGET_DIR}/*/* ${TARGET_DIR}/ - ;; - *.tar.gz) - tar --extract --file ${CACHE_DIR}/${OPENJDK_ARCHIVE} -C ${TARGET_DIR} --strip-components=${COMPONENTS_TO_STRIP} - ;; - *) - log_error "Unknown filetype: ${OPENJDK_ARCHIVE}" - exit 1 - ;; -esac - -if [ ! -e ${HOME}/java.env ]; then - cat > ${HOME}/java.env <