mirror of
https://github.com/actions/runner-images.git
synced 2025-12-14 13:17:54 +00:00
[ubuntu] Refactor bash functions (#9055)
This commit is contained in:
committed by
GitHub
parent
d16bc5f120
commit
503ae89818
@@ -8,71 +8,63 @@ source $HELPER_SCRIPTS/install.sh
|
||||
source $HELPER_SCRIPTS/os.sh
|
||||
source $HELPER_SCRIPTS/etc-environment.sh
|
||||
|
||||
createJavaEnvironmentalVariable() {
|
||||
local JAVA_VERSION=$1
|
||||
local DEFAULT=$2
|
||||
create_java_environment_variable() {
|
||||
local java_version=$1
|
||||
local default=$2
|
||||
|
||||
local INSTALL_PATH_PATTERN="/usr/lib/jvm/temurin-${JAVA_VERSION}-jdk-amd64"
|
||||
local install_path_pattern="/usr/lib/jvm/temurin-${java_version}-jdk-amd64"
|
||||
|
||||
if [[ ${DEFAULT} == "True" ]]; then
|
||||
echo "Setting up JAVA_HOME variable to ${INSTALL_PATH_PATTERN}"
|
||||
setEtcEnvironmentVariable "JAVA_HOME" "${INSTALL_PATH_PATTERN}"
|
||||
if [[ ${default} == "True" ]]; then
|
||||
echo "Setting up JAVA_HOME variable to ${install_path_pattern}"
|
||||
set_etc_environment_variable "JAVA_HOME" "${install_path_pattern}"
|
||||
echo "Setting up default symlink"
|
||||
update-java-alternatives -s ${INSTALL_PATH_PATTERN}
|
||||
update-java-alternatives -s ${install_path_pattern}
|
||||
fi
|
||||
|
||||
echo "Setting up JAVA_HOME_${JAVA_VERSION}_X64 variable to ${INSTALL_PATH_PATTERN}"
|
||||
setEtcEnvironmentVariable "JAVA_HOME_${JAVA_VERSION}_X64" "${INSTALL_PATH_PATTERN}"
|
||||
echo "Setting up JAVA_HOME_${java_version}_X64 variable to ${install_path_pattern}"
|
||||
set_etc_environment_variable "JAVA_HOME_${java_version}_X64" "${install_path_pattern}"
|
||||
}
|
||||
|
||||
enableRepositories() {
|
||||
osLabel=$(getOSVersionLabel)
|
||||
|
||||
# Add Addoptium PPA
|
||||
# apt-key is deprecated, dearmor and add manually
|
||||
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
|
||||
|
||||
}
|
||||
|
||||
installOpenJDK() {
|
||||
local JAVA_VERSION=$1
|
||||
install_open_jdk() {
|
||||
local java_version=$1
|
||||
|
||||
# Install Java from PPA repositories.
|
||||
apt-get -y install temurin-${JAVA_VERSION}-jdk=\*
|
||||
javaVersionPath="/usr/lib/jvm/temurin-${JAVA_VERSION}-jdk-amd64"
|
||||
apt-get -y install temurin-${java_version}-jdk=\*
|
||||
java_version_path="/usr/lib/jvm/temurin-${java_version}-jdk-amd64"
|
||||
|
||||
JAVA_TOOLCACHE_PATH="${AGENT_TOOLSDIRECTORY}/Java_Temurin-Hotspot_jdk"
|
||||
java_toolcache_path="${AGENT_TOOLSDIRECTORY}/Java_Temurin-Hotspot_jdk"
|
||||
|
||||
fullJavaVersion=$(cat "${javaVersionPath}/release" | grep "^SEMANTIC" | cut -d "=" -f 2 | tr -d "\"" | tr "+" "-")
|
||||
full_java_version=$(cat "${java_version_path}/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}')
|
||||
[[ -z ${full_java_version} ]] && full_java_version=$(${java_version_path}/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]+-/-/')
|
||||
[[ ${full_java_version} =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ ]] && full_java_version=$(echo $full_java_version | sed -E 's/\.[0-9]+-/-/')
|
||||
|
||||
# When version string is too short, add extra ".0" to make it valid semver
|
||||
[[ ${fullJavaVersion} =~ ^[0-9]+- ]] && fullJavaVersion=$(echo $fullJavaVersion | sed -E 's/-/.0-/')
|
||||
[[ ${fullJavaVersion} =~ ^[0-9]+\.[0-9]+- ]] && fullJavaVersion=$(echo $fullJavaVersion | sed -E 's/-/.0-/')
|
||||
[[ ${full_java_version} =~ ^[0-9]+- ]] && full_java_version=$(echo $full_java_version | sed -E 's/-/.0-/')
|
||||
[[ ${full_java_version} =~ ^[0-9]+\.[0-9]+- ]] && full_java_version=$(echo $full_java_version | sed -E 's/-/.0-/')
|
||||
|
||||
javaToolcacheVersionPath="${JAVA_TOOLCACHE_PATH}/${fullJavaVersion}"
|
||||
echo "Java ${JAVA_VERSION} Toolcache Version Path: ${javaToolcacheVersionPath}"
|
||||
mkdir -p "${javaToolcacheVersionPath}"
|
||||
java_toolcache_version_path="${java_toolcache_path}/${full_java_version}"
|
||||
echo "Java ${java_version} Toolcache Version Path: ${java_toolcache_version_path}"
|
||||
mkdir -p "${java_toolcache_version_path}"
|
||||
|
||||
# Create a complete file
|
||||
touch "${javaToolcacheVersionPath}/x64.complete"
|
||||
touch "${java_toolcache_version_path}/x64.complete"
|
||||
|
||||
# Create symlink for Java
|
||||
ln -s ${javaVersionPath} "${javaToolcacheVersionPath}/x64"
|
||||
ln -s ${java_version_path} "${java_toolcache_version_path}/x64"
|
||||
|
||||
# add extra permissions to be able execute command without sudo
|
||||
chmod -R 777 /usr/lib/jvm
|
||||
}
|
||||
|
||||
# Fetch repositories data
|
||||
enableRepositories
|
||||
# Add Addoptium PPA
|
||||
# apt-key is deprecated, dearmor and add manually
|
||||
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/ $(get_os_version_label) main" > /etc/apt/sources.list.d/adoptium.list
|
||||
|
||||
# Get all the updates from enabled repositories.
|
||||
apt-get update
|
||||
@@ -81,19 +73,19 @@ defaultVersion=$(get_toolset_value '.java.default')
|
||||
jdkVersionsToInstall=($(get_toolset_value ".java.versions[]"))
|
||||
|
||||
for jdkVersionToInstall in ${jdkVersionsToInstall[@]}; do
|
||||
installOpenJDK ${jdkVersionToInstall}
|
||||
install_open_jdk ${jdkVersionToInstall}
|
||||
|
||||
if [[ ${jdkVersionToInstall} == ${defaultVersion} ]]
|
||||
then
|
||||
createJavaEnvironmentalVariable ${jdkVersionToInstall} True
|
||||
create_java_environment_variable ${jdkVersionToInstall} True
|
||||
else
|
||||
createJavaEnvironmentalVariable ${jdkVersionToInstall} False
|
||||
create_java_environment_variable ${jdkVersionToInstall} False
|
||||
fi
|
||||
done
|
||||
|
||||
# Install Ant
|
||||
apt-get install -y --no-install-recommends ant ant-optional
|
||||
setEtcEnvironmentVariable "ANT_HOME" "/usr/share/ant"
|
||||
set_etc_environment_variable "ANT_HOME" "/usr/share/ant"
|
||||
|
||||
# Install Maven
|
||||
mavenVersion=$(get_toolset_value '.java.maven')
|
||||
@@ -114,7 +106,7 @@ gradle_archive_path=$(download_with_retry "$gradleDownloadUrl")
|
||||
unzip -qq -d /usr/share "$gradle_archive_path"
|
||||
ln -s /usr/share/gradle-"${gradleLatestVersion}"/bin/gradle /usr/bin/gradle
|
||||
gradle_home_dir=$(find /usr/share -depth -maxdepth 1 -name "gradle*")
|
||||
setEtcEnvironmentVariable "GRADLE_HOME" "${gradle_home_dir}"
|
||||
set_etc_environment_variable "GRADLE_HOME" "${gradle_home_dir}"
|
||||
|
||||
# Delete java repositories and keys
|
||||
rm -f /etc/apt/sources.list.d/adoptium.list
|
||||
@@ -122,5 +114,5 @@ rm -f /etc/apt/sources.list.d/zulu.list
|
||||
rm -f /usr/share/keyrings/adoptium.gpg
|
||||
rm -f /usr/share/keyrings/zulu.gpg
|
||||
|
||||
reloadEtcEnvironment
|
||||
reload_etc_environment
|
||||
invoke_tests "Java"
|
||||
|
||||
Reference in New Issue
Block a user