fix: running java-tools.sh fail on apt-get update (#88)

- import last version from runner-images
- replace  $HELPER_SCRIPT with hardcoded paths
- remove call to invoke_tests "Java" at the end of installation
This commit is contained in:
Eric Vantillard
2023-04-24 22:48:22 +02:00
committed by GitHub
parent 4f58a457e7
commit efcaf8c96c
+55 -40
View File
@@ -1,13 +1,9 @@
#!/bin/bash -e #!/bin/bash -e
# shellcheck disable=SC1091,SC2002,2207
################################################################################ ################################################################################
## File: java-tools.sh ## File: java-tools.sh
## Desc: Installs Java and related tooling (Ant, Gradle, Maven) ## Desc: Installs Java and related tooling (Ant, Gradle, Maven)
################################################################################ ################################################################################
set -Eeuxo pipefail
. /etc/environment . /etc/environment
. /imagegeneration/installers/helpers/os.sh . /imagegeneration/installers/helpers/os.sh
. /imagegeneration/installers/helpers/install.sh . /imagegeneration/installers/helpers/install.sh
@@ -18,7 +14,7 @@ createJavaEnvironmentalVariable() {
local VENDOR_NAME=$2 local VENDOR_NAME=$2
local DEFAULT=$3 local DEFAULT=$3
case "${VENDOR_NAME}" in case ${VENDOR_NAME} in
"Adopt" ) "Adopt" )
INSTALL_PATH_PATTERN="/usr/lib/jvm/adoptopenjdk-${JAVA_VERSION}-hotspot-amd64" ;; INSTALL_PATH_PATTERN="/usr/lib/jvm/adoptopenjdk-${JAVA_VERSION}-hotspot-amd64" ;;
@@ -31,30 +27,36 @@ createJavaEnvironmentalVariable() {
esac esac
if [[ "${DEFAULT}" == "True" ]]; then if [[ ${DEFAULT} == "True" ]]; then
echo "Setting up JAVA_HOME variable to ${INSTALL_PATH_PATTERN}" echo "Setting up JAVA_HOME variable to ${INSTALL_PATH_PATTERN}"
addEtcEnvironmentVariable JAVA_HOME "${INSTALL_PATH_PATTERN}" addEtcEnvironmentVariable JAVA_HOME ${INSTALL_PATH_PATTERN}
echo "Setting up default symlink" echo "Setting up default symlink"
update-java-alternatives -s "${INSTALL_PATH_PATTERN}" update-java-alternatives -s ${INSTALL_PATH_PATTERN}
fi fi
echo "Setting up JAVA_HOME_${JAVA_VERSION}_X64 variable to ${INSTALL_PATH_PATTERN}" echo "Setting up JAVA_HOME_${JAVA_VERSION}_X64 variable to ${INSTALL_PATH_PATTERN}"
addEtcEnvironmentVariable JAVA_HOME_"${JAVA_VERSION}"_X64 "${INSTALL_PATH_PATTERN}" addEtcEnvironmentVariable JAVA_HOME_${JAVA_VERSION}_X64 ${INSTALL_PATH_PATTERN}
} }
enableRepositories() { enableRepositories() {
# Add Adopt PPA
wget -qO - "https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public" | apt-key add - osLabel=$(getOSVersionLabel)
add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
if isUbuntu18 || isUbuntu20; then
# Add Adopt PPA
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | gpg --dearmor > /usr/share/keyrings/adopt.gpg
echo "deb [signed-by=/usr/share/keyrings/adopt.gpg] https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ $osLabel main" > /etc/apt/sources.list.d/adopt.list
fi
# Add Addoptium PPA # Add Addoptium PPA
wget -qO - "https://packages.adoptium.net/artifactory/api/gpg/key/public" | apt-key add - # apt-key is deprecated, dearmor and add manually
add-apt-repository --yes https://packages.adoptium.net/artifactory/deb/ wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor > /usr/share/keyrings/adoptium.gpg
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb/ $osLabel main" > /etc/apt/sources.list.d/adoptium.list
if isUbuntu18 ; then if isUbuntu18 ; then
# Install GPG Key for Azul Open JDK. See https://www.azul.com/downloads/azure-only/zulu/ # Install GPG Key for Azul Open JDK. See https://www.azul.com/downloads/azure-only/zulu/
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9 wget -qO - https://www.azul.com/wp-content/uploads/2021/05/0xB1998361219BD9C9.txt | gpg --dearmor > /usr/share/keyrings/zulu.gpg
apt-add-repository "deb https://repos.azul.com/azure-only/zulu/apt stable main" echo "deb [signed-by=/usr/share/keyrings/zulu.gpg] https://repos.azul.com/azure-only/zulu/apt stable main" > /etc/apt/sources.list.d/zulu.list
fi fi
} }
@@ -63,11 +65,11 @@ installOpenJDK() {
local VENDOR_NAME=$2 local VENDOR_NAME=$2
# Install Java from PPA repositories. # Install Java from PPA repositories.
if [[ "${VENDOR_NAME}" == "Temurin-Hotspot" ]]; then if [[ ${VENDOR_NAME} == "Temurin-Hotspot" ]]; then
apt-get -y install temurin-"${JAVA_VERSION}"-jdk=\* apt-get -y install temurin-${JAVA_VERSION}-jdk=\*
javaVersionPath="/usr/lib/jvm/temurin-${JAVA_VERSION}-jdk-amd64" javaVersionPath="/usr/lib/jvm/temurin-${JAVA_VERSION}-jdk-amd64"
elif [[ "${VENDOR_NAME}" == "Adopt" ]]; then elif [[ ${VENDOR_NAME} == "Adopt" ]]; then
apt-get -y install adoptopenjdk-"${JAVA_VERSION}"-hotspot=\* apt-get -y install adoptopenjdk-${JAVA_VERSION}-hotspot=\*
javaVersionPath="/usr/lib/jvm/adoptopenjdk-${JAVA_VERSION}-hotspot-amd64" javaVersionPath="/usr/lib/jvm/adoptopenjdk-${JAVA_VERSION}-hotspot-amd64"
else else
echo "${VENDOR_NAME} is invalid, valid names are: Temurin-Hotspot and Adopt" echo "${VENDOR_NAME} is invalid, valid names are: Temurin-Hotspot and Adopt"
@@ -76,10 +78,14 @@ installOpenJDK() {
JAVA_TOOLCACHE_PATH="${AGENT_TOOLSDIRECTORY}/Java_${VENDOR_NAME}_jdk" JAVA_TOOLCACHE_PATH="${AGENT_TOOLSDIRECTORY}/Java_${VENDOR_NAME}_jdk"
fullJavaVersion=$(cat "${javaVersionPath}"/release | grep "^SEMANTIC" | cut -d "=" -f 2 | tr -d "\"" | tr "+" "-") fullJavaVersion=$(cat "${javaVersionPath}/release" | grep "^SEMANTIC" | cut -d "=" -f 2 | tr -d "\"" | tr "+" "-")
# If there is no semver in java release, then extract java version from -fullversion # If there is no semver in java release, then extract java version from -fullversion
[[ -z "${fullJavaVersion}" ]] && fullJavaVersion=$("${javaVersionPath}"/bin/java -fullversion 2>&1 | tr -d "\"" | tr "+" "-" | awk '{print $4}') [[ -z ${fullJavaVersion} ]] && fullJavaVersion=$(${javaVersionPath}/bin/java -fullversion 2>&1 | tr -d "\"" | tr "+" "-" | awk '{print $4}')
# Convert non valid semver like 11.0.14.1-9 -> 11.0.14-9
# https://github.com/adoptium/temurin-build/issues/2248
[[ ${fullJavaVersion} =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ ]] && fullJavaVersion=$(echo $fullJavaVersion | sed -E 's/\.[0-9]+-/-/')
javaToolcacheVersionPath="${JAVA_TOOLCACHE_PATH}/${fullJavaVersion}" javaToolcacheVersionPath="${JAVA_TOOLCACHE_PATH}/${fullJavaVersion}"
mkdir -p "${javaToolcacheVersionPath}" mkdir -p "${javaToolcacheVersionPath}"
@@ -88,7 +94,7 @@ installOpenJDK() {
touch "${javaToolcacheVersionPath}/x64.complete" touch "${javaToolcacheVersionPath}/x64.complete"
# Create symlink for Java # Create symlink for Java
ln -s "${javaVersionPath}" "${javaToolcacheVersionPath}"/x64 ln -s ${javaVersionPath} "${javaToolcacheVersionPath}/x64"
# add extra permissions to be able execute command without sudo # add extra permissions to be able execute command without sudo
chmod -R 777 /usr/lib/jvm chmod -R 777 /usr/lib/jvm
@@ -100,23 +106,23 @@ enableRepositories
# Get all the updates from enabled repositories. # Get all the updates from enabled repositories.
apt-get update apt-get update
defaultVersion=$(jq '.java.default' '/imagegeneration/toolset.json') defaultVersion=$(get_toolset_value '.java.default')
defaultVendor=$(jq '.java.default_vendor' '/imagegeneration/toolset.json') defaultVendor=$(get_toolset_value '.java.default_vendor')
jdkVendors=($(jq '.java.vendors[].name' '/imagegeneration/toolset.json')) jdkVendors=($(get_toolset_value '.java.vendors[].name'))
for jdkVendor in "${jdkVendors[@]}"; do for jdkVendor in ${jdkVendors[@]}; do
# get vendor-specific versions # get vendor-specific versions
jdkVersionsToInstall=($(jq ".java.vendors[] | select (.name==\"${jdkVendor}\") | .versions[]" "/imagegeneration/toolset.json")) jdkVersionsToInstall=($(get_toolset_value ".java.vendors[] | select (.name==\"${jdkVendor}\") | .versions[]"))
for jdkVersionToInstall in "${jdkVersionsToInstall[@]}"; do for jdkVersionToInstall in ${jdkVersionsToInstall[@]}; do
installOpenJDK "${jdkVersionToInstall}" "${jdkVendor}" installOpenJDK ${jdkVersionToInstall} ${jdkVendor}
isDefaultVersion=False; [[ "${jdkVersionToInstall}" == "${defaultVersion}" ]] && isDefaultVersion=True isDefaultVersion=False; [[ ${jdkVersionToInstall} == ${defaultVersion} ]] && isDefaultVersion=True
if [[ "${jdkVendor}" == "${defaultVendor}" ]]; then if [[ ${jdkVendor} == ${defaultVendor} ]]; then
createJavaEnvironmentalVariable "${jdkVersionToInstall}" "${jdkVendor}" "${isDefaultVersion}" createJavaEnvironmentalVariable ${jdkVersionToInstall} ${jdkVendor} ${isDefaultVersion}
fi fi
done done
@@ -132,23 +138,32 @@ apt-get install -y --no-install-recommends ant ant-optional
echo "ANT_HOME=/usr/share/ant" | tee -a /etc/environment echo "ANT_HOME=/usr/share/ant" | tee -a /etc/environment
# Install Maven # Install Maven
mavenVersion=$(jq '.java.maven' "/imagegeneration/toolset.json") mavenVersion=$(get_toolset_value '.java.maven')
mavenDownloadUrl="https://www-eu.apache.org/dist/maven/maven-3/${mavenVersion}/binaries/apache-maven-${mavenVersion}-bin.zip" mavenDownloadUrl="https://www-eu.apache.org/dist/maven/maven-3/${mavenVersion}/binaries/apache-maven-${mavenVersion}-bin.zip"
download_with_retries "${mavenDownloadUrl}" "/tmp" "maven.zip" download_with_retries ${mavenDownloadUrl} "/tmp" "maven.zip"
unzip -qq -d /usr/share /tmp/maven.zip unzip -qq -d /usr/share /tmp/maven.zip
ln -s /usr/share/apache-maven-"${mavenVersion}"/bin/mvn /usr/bin/mvn ln -s /usr/share/apache-maven-${mavenVersion}/bin/mvn /usr/bin/mvn
# Install Gradle # Install Gradle
# This script founds the latest gradle release from https://services.gradle.org/versions/all # This script founds the latest gradle release from https://services.gradle.org/versions/all
# The release is downloaded, extracted, a symlink is created that points to it, and GRADLE_HOME is set. # The release is downloaded, extracted, a symlink is created that points to it, and GRADLE_HOME is set.
gradleJson=$(curl -s https://services.gradle.org/versions/all) gradleJson=$(curl -s https://services.gradle.org/versions/all)
gradleLatestVersion=$(echo "${gradleJson}" | jq -r '.[] | select(.version | contains("-") | not).version' | sort -V | tail -n1) gradleLatestVersion=$(echo ${gradleJson} | jq -r '.[] | select(.version | contains("-") | not).version' | sort -V | tail -n1)
gradleDownloadUrl=$(echo "${gradleJson}" | jq -r ".[] | select(.version==\"$gradleLatestVersion\") | .downloadUrl") gradleDownloadUrl=$(echo ${gradleJson} | jq -r ".[] | select(.version==\"$gradleLatestVersion\") | .downloadUrl")
echo "gradleUrl=${gradleDownloadUrl}" echo "gradleUrl=${gradleDownloadUrl}"
echo "gradleVersion=${gradleLatestVersion}" echo "gradleVersion=${gradleLatestVersion}"
download_with_retries "${gradleDownloadUrl}" "/tmp" "gradleLatest.zip" download_with_retries ${gradleDownloadUrl} "/tmp" "gradleLatest.zip"
unzip -qq -d /usr/share /tmp/gradleLatest.zip unzip -qq -d /usr/share /tmp/gradleLatest.zip
ln -s /usr/share/gradle-"${gradleLatestVersion}"/bin/gradle /usr/bin/gradle ln -s /usr/share/gradle-"${gradleLatestVersion}"/bin/gradle /usr/bin/gradle
echo "GRADLE_HOME=$(find /usr/share -depth -maxdepth 1 -name "gradle*")" | tee -a /etc/environment echo "GRADLE_HOME=$(find /usr/share -depth -maxdepth 1 -name "gradle*")" | tee -a /etc/environment
# Delete java repositories and keys
rm -f /etc/apt/sources.list.d/adopt.list
rm -f /etc/apt/sources.list.d/adoptium.list
rm -f /etc/apt/sources.list.d/zulu.list
rm -f /usr/share/keyrings/adopt.gpg
rm -f /usr/share/keyrings/adoptium.gpg
rm -f /usr/share/keyrings/zulu.gpg
reloadEtcEnvironment reloadEtcEnvironment