mirror of
https://github.com/actions/runner-images.git
synced 2025-12-14 22:05:17 +00:00
[ubuntu] Improve dotnet SDKs installation (#2078)
* download dotnet sdk with retries * url file doesnt exists * changed background processes to gnu parallel * moved scriptblock to function * fixed path * changed rsync to mv * typo * rsync with remove-source-files option * minor function changes Co-authored-by: Leonid Lapshin <originalnoe-nazvanie@yandex.ru>
This commit is contained in:
@@ -46,34 +46,35 @@ done
|
|||||||
sdks=()
|
sdks=()
|
||||||
for version in ${versions[@]}; do
|
for version in ${versions[@]}; do
|
||||||
release_url="https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/${version}/releases.json"
|
release_url="https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/${version}/releases.json"
|
||||||
echo "${release_url}"
|
download_with_retries "${release_url}" "." "${version}.json"
|
||||||
releases=$(curl "${release_url}")
|
releases=$(cat "./${version}.json")
|
||||||
sdks=("${sdks[@]}" $(echo "${releases}" | jq '.releases[]' | jq '.sdk.version'))
|
sdks=("${sdks[@]}" $(echo "${releases}" | jq '.releases[]' | jq '.sdk.version'))
|
||||||
sdks=("${sdks[@]}" $(echo "${releases}" | jq '.releases[]' | jq '.sdks[]?' | jq '.version'))
|
sdks=("${sdks[@]}" $(echo "${releases}" | jq '.releases[]' | jq '.sdks[]?' | jq '.version'))
|
||||||
|
rm ./${version}.json
|
||||||
done
|
done
|
||||||
|
|
||||||
sortedSdks=$(echo ${sdks[@]} | tr ' ' '\n' | grep -v preview | grep -v rc | grep -v display | cut -d\" -f2 | sort -u -r)
|
sortedSdks=$(echo ${sdks[@]} | tr ' ' '\n' | grep -v preview | grep -v rc | grep -v display | cut -d\" -f2 | sort -u -r)
|
||||||
|
extract_dotnet_sdk() {
|
||||||
|
local ARCHIVE_NAME="$1"
|
||||||
|
set -e
|
||||||
|
dest="./tmp-$(basename -s .tar.gz $ARCHIVE_NAME)"
|
||||||
|
echo "Extracting $ARCHIVE_NAME to $dest"
|
||||||
|
mkdir "$dest" && tar -C "$dest" -xzf "$ARCHIVE_NAME"
|
||||||
|
rsync -qav --remove-source-files "$dest/shared/" /usr/share/dotnet/shared/
|
||||||
|
rsync -qav --remove-source-files "$dest/host/" /usr/share/dotnet/host/
|
||||||
|
rsync -qav --remove-source-files "$dest/sdk/" /usr/share/dotnet/sdk/
|
||||||
|
rm -rf "$dest" "$ARCHIVE_NAME"
|
||||||
|
}
|
||||||
|
|
||||||
for sdk in $sortedSdks; do
|
# Download/install additional SDKs in parallel
|
||||||
url="https://dotnetcli.blob.core.windows.net/dotnet/Sdk/$sdk/dotnet-sdk-$sdk-linux-x64.tar.gz"
|
export -f download_with_retries
|
||||||
echo "$url" >> urls
|
export -f extract_dotnet_sdk
|
||||||
echo "Adding $url to list to download later"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Download additional SDKs
|
parallel --jobs 0 --halt soon,fail=1 \
|
||||||
echo "Downloading release tarballs..."
|
'url="https://dotnetcli.blob.core.windows.net/dotnet/Sdk/{}/dotnet-sdk-{}-linux-x64.tar.gz"; \
|
||||||
cat urls | xargs -n 1 -P 16 wget -q
|
download_with_retries $url' ::: "${sortedSdks[@]}"
|
||||||
for tarball in *.tar.gz; do
|
|
||||||
dest="./tmp-$(basename -s .tar.gz $tarball)"
|
find . -name "*.tar.gz" | parallel --halt soon,fail=1 'extract_dotnet_sdk {}'
|
||||||
echo "Extracting $tarball to $dest"
|
|
||||||
mkdir "$dest" && tar -C "$dest" -xzf "$tarball"
|
|
||||||
rsync -qav "$dest/shared/" /usr/share/dotnet/shared/
|
|
||||||
rsync -qav "$dest/host/" /usr/share/dotnet/host/
|
|
||||||
rsync -qav "$dest/sdk/" /usr/share/dotnet/sdk/
|
|
||||||
rm -rf "$dest"
|
|
||||||
rm "$tarball"
|
|
||||||
done
|
|
||||||
rm urls
|
|
||||||
|
|
||||||
# Smoke test each SDK
|
# Smoke test each SDK
|
||||||
for sdk in $sortedSdks; do
|
for sdk in $sortedSdks; do
|
||||||
|
|||||||
Reference in New Issue
Block a user