add arm64/armhf for 18.04, replace git{,-lfs} (#51)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#!/bin/bash -e
|
||||
# shellcheck disable=SC1091,SC2002,2207
|
||||
################################################################################
|
||||
## File: java-tools.sh
|
||||
## Desc: Installs Java and related tooling (Ant, Gradle, Maven)
|
||||
@@ -6,64 +7,132 @@
|
||||
|
||||
set -Eeuxo pipefail
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
|
||||
. /etc/environment
|
||||
# shellcheck disable=SC1091
|
||||
. /imagegeneration/installers/helpers/os.sh
|
||||
# shellcheck disable=SC1091
|
||||
. /imagegeneration/installers/helpers/install.sh
|
||||
. /imagegeneration/installers/helpers/etc-environment.sh
|
||||
|
||||
JAVA_VERSIONS_LIST=$(get_toolset_value '.java.versions | .[]')
|
||||
DEFAULT_JDK_VERSION=$(get_toolset_value '.java.default')
|
||||
JAVA_TOOLCACHE_PATH="$AGENT_TOOLSDIRECTORY/Java_Adopt_jdk"
|
||||
createJavaEnvironmentalVariable() {
|
||||
local JAVA_VERSION=$1
|
||||
local VENDOR_NAME=$2
|
||||
local DEFAULT=$3
|
||||
|
||||
# Install GPG Key for Adopt Open JDK. See https://adoptopenjdk.net/installation.html
|
||||
wget -qO - "https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public" | apt-key add -
|
||||
add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
|
||||
case "${VENDOR_NAME}" in
|
||||
|
||||
if isUbuntu18; then
|
||||
# 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
|
||||
apt-add-repository "deb https://repos.azul.com/azure-only/zulu/apt stable main"
|
||||
fi
|
||||
"Adopt" )
|
||||
INSTALL_PATH_PATTERN="/usr/lib/jvm/adoptopenjdk-${JAVA_VERSION}-hotspot-amd64" ;;
|
||||
|
||||
"Temurin-Hotspot" )
|
||||
INSTALL_PATH_PATTERN="/usr/lib/jvm/temurin-${JAVA_VERSION}-jdk-amd64" ;;
|
||||
*)
|
||||
echo "Unknown vendor"
|
||||
exit 1
|
||||
|
||||
esac
|
||||
|
||||
if [[ "${DEFAULT}" == "True" ]]; then
|
||||
echo "Setting up JAVA_HOME variable to ${INSTALL_PATH_PATTERN}"
|
||||
addEtcEnvironmentVariable JAVA_HOME "${INSTALL_PATH_PATTERN}"
|
||||
echo "Setting up default symlink"
|
||||
update-java-alternatives -s "${INSTALL_PATH_PATTERN}"
|
||||
fi
|
||||
|
||||
echo "Setting up JAVA_HOME_${JAVA_VERSION}_X64 variable to ${INSTALL_PATH_PATTERN}"
|
||||
addEtcEnvironmentVariable JAVA_HOME_"${JAVA_VERSION}"_X64 "${INSTALL_PATH_PATTERN}"
|
||||
}
|
||||
|
||||
enableRepositories() {
|
||||
# Add Adopt PPA
|
||||
wget -qO - "https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public" | apt-key add -
|
||||
add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
|
||||
|
||||
# Add Addoptium PPA
|
||||
wget -qO - "https://packages.adoptium.net/artifactory/api/gpg/key/public" | apt-key add -
|
||||
add-apt-repository --yes https://packages.adoptium.net/artifactory/deb/
|
||||
|
||||
if isUbuntu18 ; then
|
||||
# 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
|
||||
apt-add-repository "deb https://repos.azul.com/azure-only/zulu/apt stable main"
|
||||
fi
|
||||
}
|
||||
|
||||
installOpenJDK() {
|
||||
local JAVA_VERSION=$1
|
||||
local VENDOR_NAME=$2
|
||||
|
||||
# Install Java from PPA repositories.
|
||||
if [[ "${VENDOR_NAME}" == "Temurin-Hotspot" ]]; then
|
||||
apt-get -y install temurin-"${JAVA_VERSION}"-jdk=\*
|
||||
javaVersionPath="/usr/lib/jvm/temurin-${JAVA_VERSION}-jdk-amd64"
|
||||
elif [[ "${VENDOR_NAME}" == "Adopt" ]]; then
|
||||
apt-get -y install adoptopenjdk-"${JAVA_VERSION}"-hotspot=\*
|
||||
javaVersionPath="/usr/lib/jvm/adoptopenjdk-${JAVA_VERSION}-hotspot-amd64"
|
||||
else
|
||||
echo "${VENDOR_NAME} is invalid, valid names are: Temurin-Hotspot and Adopt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAVA_TOOLCACHE_PATH="${AGENT_TOOLSDIRECTORY}/Java_${VENDOR_NAME}_jdk"
|
||||
|
||||
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
|
||||
[[ -z "${fullJavaVersion}" ]] && fullJavaVersion=$("${javaVersionPath}"/bin/java -fullversion 2>&1 | tr -d "\"" | tr "+" "-" | awk '{print $4}')
|
||||
|
||||
javaToolcacheVersionPath="${JAVA_TOOLCACHE_PATH}/${fullJavaVersion}"
|
||||
mkdir -p "${javaToolcacheVersionPath}"
|
||||
|
||||
# Create a complete file
|
||||
touch "${javaToolcacheVersionPath}/x64.complete"
|
||||
|
||||
# Create symlink for Java
|
||||
ln -s "${javaVersionPath}" "${javaToolcacheVersionPath}"/x64
|
||||
|
||||
# add extra permissions to be able execute command without sudo
|
||||
chmod -R 777 /usr/lib/jvm
|
||||
}
|
||||
|
||||
# Fetch repositories data
|
||||
enableRepositories
|
||||
|
||||
# Get all the updates from enabled repositories.
|
||||
apt-get update
|
||||
|
||||
# shellcheck disable=SC2068
|
||||
for JAVA_VERSION in ${JAVA_VERSIONS_LIST[@]}; do
|
||||
apt-get -y install adoptopenjdk-"$JAVA_VERSION"-hotspot=\*
|
||||
javaVersionPath="/usr/lib/jvm/adoptopenjdk-${JAVA_VERSION}-hotspot-amd64"
|
||||
echo "JAVA_HOME_${JAVA_VERSION}_X64=$javaVersionPath" | tee -a /etc/environment
|
||||
fullJavaVersion=$(grep "^SEMANTIC" <"$javaVersionPath/release" | cut -d "=" -f 2 | tr -d "\"" | tr "+" "-")
|
||||
defaultVersion=$(jq '.java.default' '/imagegeneration/toolset.json')
|
||||
defaultVendor=$(jq '.java.default_vendor' '/imagegeneration/toolset.json')
|
||||
jdkVendors=($(jq '.java.vendors[].name' '/imagegeneration/toolset.json'))
|
||||
|
||||
# If there is no semver in java release, then extract java version from -fullversion
|
||||
if [[ -z $fullJavaVersion ]]; then
|
||||
fullJavaVersion=$(java -fullversion 2>&1 | tr -d "\"" | tr "+" "-" | awk '{print $4}')
|
||||
fi
|
||||
for jdkVendor in "${jdkVendors[@]}"; do
|
||||
|
||||
javaToolcacheVersionPath="$JAVA_TOOLCACHE_PATH/$fullJavaVersion"
|
||||
mkdir -p "$javaToolcacheVersionPath"
|
||||
# get vendor-specific versions
|
||||
jdkVersionsToInstall=($(jq ".java.vendors[] | select (.name==\"${jdkVendor}\") | .versions[]" "/imagegeneration/toolset.json"))
|
||||
|
||||
# Create a complete file
|
||||
touch "$javaToolcacheVersionPath/x64.complete"
|
||||
for jdkVersionToInstall in "${jdkVersionsToInstall[@]}"; do
|
||||
|
||||
# Create symlink for Java
|
||||
ln -s "$javaVersionPath" "$javaToolcacheVersionPath/x64"
|
||||
installOpenJDK "${jdkVersionToInstall}" "${jdkVendor}"
|
||||
|
||||
isDefaultVersion=False; [[ "${jdkVersionToInstall}" == "${defaultVersion}" ]] && isDefaultVersion=True
|
||||
|
||||
if [[ "${jdkVendor}" == "${defaultVendor}" ]]; then
|
||||
createJavaEnvironmentalVariable "${jdkVersionToInstall}" "${jdkVendor}" "${isDefaultVersion}"
|
||||
fi
|
||||
|
||||
done
|
||||
done
|
||||
|
||||
# Set Default Java version
|
||||
update-java-alternatives -s /usr/lib/jvm/adoptopenjdk-"${DEFAULT_JDK_VERSION}"-hotspot-amd64
|
||||
# Adopt 12 is only available for Ubuntu 18.04
|
||||
if isUbuntu18; then
|
||||
createJavaEnvironmentalVariable "12" "Adopt"
|
||||
fi
|
||||
|
||||
echo "JAVA_HOME=/usr/lib/jvm/adoptopenjdk-${DEFAULT_JDK_VERSION}-hotspot-amd64" | tee -a /etc/environment
|
||||
|
||||
# add extra permissions to be able execute command without sudo
|
||||
chmod -R 777 /usr/lib/jvm
|
||||
# Install Ant
|
||||
apt-fast install -y --no-install-recommends ant ant-optional
|
||||
apt-get install -y --no-install-recommends ant ant-optional
|
||||
echo "ANT_HOME=/usr/share/ant" | tee -a /etc/environment
|
||||
|
||||
# Install Maven
|
||||
mavenVersion=$(get_toolset_value '.java.maven')
|
||||
mavenVersion=$(jq '.java.maven' "/imagegeneration/toolset.json")
|
||||
mavenDownloadUrl="https://www-eu.apache.org/dist/maven/maven-3/${mavenVersion}/binaries/apache-maven-${mavenVersion}-bin.zip"
|
||||
download_with_retries "${mavenDownloadUrl}" "/tmp" "maven.zip"
|
||||
unzip -qq -d /usr/share /tmp/maven.zip
|
||||
@@ -73,11 +142,13 @@ ln -s /usr/share/apache-maven-"${mavenVersion}"/bin/mvn /usr/bin/mvn
|
||||
# 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.
|
||||
gradleJson=$(curl -s https://services.gradle.org/versions/all)
|
||||
gradleLatestVersion=$(echo "$gradleJson" | jq -r '.[] | select(.version | contains("-") | not).version' | sort -V | tail -n1)
|
||||
gradleDownloadUrl=$(echo "$gradleJson" | jq -r ".[] | select(.version==\"$gradleLatestVersion\") | .downloadUrl")
|
||||
echo "gradleUrl=$gradleDownloadUrl"
|
||||
echo "gradleVersion=$gradleLatestVersion"
|
||||
download_with_retries "$gradleDownloadUrl" "/tmp" "gradleLatest.zip"
|
||||
gradleLatestVersion=$(echo "${gradleJson}" | jq -r '.[] | select(.version | contains("-") | not).version' | sort -V | tail -n1)
|
||||
gradleDownloadUrl=$(echo "${gradleJson}" | jq -r ".[] | select(.version==\"$gradleLatestVersion\") | .downloadUrl")
|
||||
echo "gradleUrl=${gradleDownloadUrl}"
|
||||
echo "gradleVersion=${gradleLatestVersion}"
|
||||
download_with_retries "${gradleDownloadUrl}" "/tmp" "gradleLatest.zip"
|
||||
unzip -qq -d /usr/share /tmp/gradleLatest.zip
|
||||
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
|
||||
|
||||
reloadEtcEnvironment
|
||||
|
||||
Reference in New Issue
Block a user