mirror of
https://github.com/actions/runner-images.git
synced 2025-12-20 06:35:47 +00:00
[MacOS] Move preinstalled java distributions to the toolcache directory (#2883)
* Move java to the toolcache * resolved comments * added sudo for ln command * fixed versions and added symlink * fixed openjdk.sh * fixed typo * updated SoftwareReport * fixed SoftwareReport * fixed SoftwareReport * fixed tool name Co-authored-by: Nikita Bykov <v-nibyko@microsoft.com>
This commit is contained in:
@@ -1,28 +1,53 @@
|
|||||||
#!/bin/bash -e -o pipefail
|
#!/bin/bash -e -o pipefail
|
||||||
source ~/utils/utils.sh
|
source ~/utils/utils.sh
|
||||||
|
|
||||||
|
JAVA_TOOLCACHE_PATH=$AGENT_TOOLSDIRECTORY/Java_Adopt_jdk
|
||||||
|
|
||||||
createEnvironmentVariable() {
|
createEnvironmentVariable() {
|
||||||
local VARIABLE_NAME=$1
|
local JAVA_VERSION=$1
|
||||||
local JAVA_VERSION=$2
|
local JAVA_PATH=$2
|
||||||
if [[ $JAVA_VERSION == "8" ]]; then
|
|
||||||
JAVA_VERSION="1.${JAVA_VERSION}"
|
local JAVA_HOME_PATH=$JAVA_PATH/Contents/Home
|
||||||
|
if [[ $JAVA_VERSION == $JAVA_DEFAULT ]]; then
|
||||||
|
echo "export JAVA_HOME=${JAVA_HOME_PATH}" >> "${HOME}/.bashrc"
|
||||||
fi
|
fi
|
||||||
local JAVA_PATH=$(/usr/libexec/java_home -v${JAVA_VERSION})
|
echo "export JAVA_HOME_${JAVA_VERSION}_X64=${JAVA_HOME_PATH}" >> "${HOME}/.bashrc"
|
||||||
echo "export ${VARIABLE_NAME}=${JAVA_PATH}" >> "${HOME}/.bashrc"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
brew tap AdoptOpenJDK/openjdk
|
installJavaFromAdoptOpenJDK() {
|
||||||
|
local JAVA_VERSION=$1
|
||||||
|
|
||||||
|
# Get link for Java binaries and Java version
|
||||||
|
assetUrl=$(curl -s "https://api.adoptopenjdk.net/v3/assets/latest/${JAVA_VERSION}/hotspot")
|
||||||
|
asset=$(echo $assetUrl | jq -r '.[] | select(.binary.os=="mac" and .binary.image_type=="jdk" and .binary.architecture=="x64")')
|
||||||
|
archivePath=$(echo $asset | jq -r '.binary.package.link')
|
||||||
|
fullVersion=$(echo $asset | jq -r '.version.semver')
|
||||||
|
|
||||||
|
javaToolcacheVersionPath=$JAVA_TOOLCACHE_PATH/$fullVersion
|
||||||
|
javaToolcacheVersionArchPath=$javaToolcacheVersionPath/x64
|
||||||
|
|
||||||
|
# Download and extract Java binaries
|
||||||
|
download_with_retries $archivePath /tmp OpenJDK${JAVA_VERSION}.tar.gz
|
||||||
|
mkdir -p $javaToolcacheVersionArchPath
|
||||||
|
tar -xzf /tmp/OpenJDK${JAVA_VERSION}.tar.gz -C $javaToolcacheVersionArchPath --strip-components=1
|
||||||
|
# Create complete file
|
||||||
|
touch $javaToolcacheVersionPath/x64.complete
|
||||||
|
|
||||||
|
createEnvironmentVariable $JAVA_VERSION $javaToolcacheVersionArchPath
|
||||||
|
|
||||||
|
# Create a symlink to '/Library/Java/JavaVirtualMachines'
|
||||||
|
# so '/usr/libexec/java_home' will be able to find Java
|
||||||
|
sudo ln -sf $javaToolcacheVersionArchPath /Library/Java/JavaVirtualMachines/adoptopenjdk-${JAVA_VERSION}.jdk
|
||||||
|
}
|
||||||
|
|
||||||
JAVA_VERSIONS_LIST=($(get_toolset_value '.java.versions | .[]'))
|
JAVA_VERSIONS_LIST=($(get_toolset_value '.java.versions | .[]'))
|
||||||
JAVA_DEFAULT=$(get_toolset_value '.java.default')
|
JAVA_DEFAULT=$(get_toolset_value '.java.default')
|
||||||
|
|
||||||
for JAVA_VERSION in "${JAVA_VERSIONS_LIST[@]}"
|
for JAVA_VERSION in "${JAVA_VERSIONS_LIST[@]}"
|
||||||
do
|
do
|
||||||
brew install --cask "adoptopenjdk${JAVA_VERSION}"
|
installJavaFromAdoptOpenJDK $JAVA_VERSION
|
||||||
createEnvironmentVariable "JAVA_HOME_${JAVA_VERSION}_X64" $JAVA_VERSION
|
|
||||||
done
|
done
|
||||||
|
|
||||||
createEnvironmentVariable "JAVA_HOME" $JAVA_DEFAULT
|
|
||||||
|
|
||||||
echo Installing Maven...
|
echo Installing Maven...
|
||||||
brew_smart_install "maven"
|
brew_smart_install "maven"
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,3 @@
|
|||||||
function Get-JavaFullVersion {
|
|
||||||
param($JavaRootPath)
|
|
||||||
|
|
||||||
$javaBinPath = Join-Path $javaRootPath "/bin/java"
|
|
||||||
$javaVersionOutput = (Get-CommandResult "$javaBinPath -version").Output
|
|
||||||
$matchResult = $javaVersionOutput | Select-String '^openjdk version \"([\d\._]+)\"'
|
|
||||||
return $matchResult.Matches.Groups[1].Value
|
|
||||||
}
|
|
||||||
|
|
||||||
function Get-JavaVersions {
|
function Get-JavaVersions {
|
||||||
$defaultJavaPath = Get-Item env:JAVA_HOME
|
$defaultJavaPath = Get-Item env:JAVA_HOME
|
||||||
$javaVersions = Get-Item env:JAVA_HOME_*_X64
|
$javaVersions = Get-Item env:JAVA_HOME_*_X64
|
||||||
@@ -17,12 +8,13 @@ function Get-JavaVersions {
|
|||||||
|
|
||||||
return $javaVersions | Sort-Object $sortRules | ForEach-Object {
|
return $javaVersions | Sort-Object $sortRules | ForEach-Object {
|
||||||
$javaPath = $_.Value
|
$javaPath = $_.Value
|
||||||
$version = Get-JavaFullVersion $javaPath
|
# Take semver from the java path
|
||||||
|
$version = $javaPath.split('/')[5]
|
||||||
$defaultPostfix = ($javaPath -eq $defaultJavaPath) ? " (default)" : ""
|
$defaultPostfix = ($javaPath -eq $defaultJavaPath) ? " (default)" : ""
|
||||||
|
|
||||||
[PSCustomObject] @{
|
[PSCustomObject] @{
|
||||||
"Version" = $version + $defaultPostfix
|
"Version" = $version + $defaultPostfix
|
||||||
"Vendor" = "AdoptOpenJDK"
|
"Vendor" = "Adopt OpenJDK"
|
||||||
"Environment Variable" = $_.Name
|
"Environment Variable" = $_.Name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,15 +35,7 @@ Describe "Java" {
|
|||||||
"/usr/libexec/java_home -v${Version}" | Should -ReturnZeroExitCode
|
"/usr/libexec/java_home -v${Version}" | Should -ReturnZeroExitCode
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_.Title -ne "Default") {
|
It "Java <Version>" -TestCases $_ {
|
||||||
It "Version is valid" -TestCases $_ {
|
|
||||||
$javaRootPath = "/Library/Java/JavaVirtualMachines/adoptopenjdk-${Title}.jdk/Contents/Home"
|
|
||||||
$javaBinPath = Join-Path $javaRootPath "/bin/java"
|
|
||||||
Validate-JavaVersion -JavaCommand "$javaBinPath -version" -ExpectedVersion $Version
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
It "<EnvVariable>" -TestCases $_ {
|
|
||||||
$envVariablePath = Get-EnvironmentVariable $EnvVariable
|
$envVariablePath = Get-EnvironmentVariable $EnvVariable
|
||||||
$javaBinPath = Join-Path $envVariablePath "/bin/java"
|
$javaBinPath = Join-Path $envVariablePath "/bin/java"
|
||||||
Validate-JavaVersion -JavaCommand "$javaBinPath -version" -ExpectedVersion $Version
|
Validate-JavaVersion -JavaCommand "$javaBinPath -version" -ExpectedVersion $Version
|
||||||
|
|||||||
Reference in New Issue
Block a user