mirror of
https://github.com/actions/runner-images.git
synced 2025-12-14 05:07:02 +00:00
[Ubuntu] Implement helper to get GitHub package download URL (#4947)
This commit is contained in:
committed by
GitHub
parent
cb8931646f
commit
404da76e17
@@ -66,3 +66,22 @@ get_toolset_value() {
|
|||||||
local query=$1
|
local query=$1
|
||||||
echo "$(jq -r "$query" $toolset_path)"
|
echo "$(jq -r "$query" $toolset_path)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_github_package_download_url() {
|
||||||
|
local REPO_ORG=$1
|
||||||
|
local FILTER=$2
|
||||||
|
local VERSION=$3
|
||||||
|
local SEARCH_IN_COUNT="100"
|
||||||
|
|
||||||
|
json=$(curl -s "https://api.github.com/repos/${REPO_ORG}/releases?per_page=${SEARCH_IN_COUNT}")
|
||||||
|
|
||||||
|
if [ -n "$VERSION" ]; then
|
||||||
|
tagName=$(echo $json | jq -r '.[] | select(.prerelease==false).tag_name' | sort --unique --version-sort | egrep -v ".*-[a-z]|beta" | egrep "\w*${VERSION}" | tail -1)
|
||||||
|
else
|
||||||
|
tagName=$(echo $json | jq -r '.[] | select(.prerelease==false).tag_name' | sort --unique --version-sort | egrep -v ".*-[a-z]|beta" | tail -1)
|
||||||
|
fi
|
||||||
|
|
||||||
|
downloadUrl=$(echo $json | jq -r ".[] | select(.tag_name==\"${tagName}\").assets[].browser_download_url | select(${FILTER})" | head -n 1)
|
||||||
|
|
||||||
|
echo $downloadUrl
|
||||||
|
}
|
||||||
@@ -8,8 +8,8 @@
|
|||||||
source $HELPER_SCRIPTS/install.sh
|
source $HELPER_SCRIPTS/install.sh
|
||||||
|
|
||||||
# Install Alibaba Cloud CLI
|
# Install Alibaba Cloud CLI
|
||||||
URL=$(curl -s https://api.github.com/repos/aliyun/aliyun-cli/releases/latest | jq -r '.assets[].browser_download_url | select(contains("aliyun-cli-linux") and endswith("amd64.tgz"))')
|
downloadUrl=$(get_github_package_download_url "aliyun/aliyun-cli" "contains(\"aliyun-cli-linux\") and endswith(\"amd64.tgz\")")
|
||||||
download_with_retries $URL "/tmp"
|
download_with_retries $downloadUrl "/tmp"
|
||||||
tar xzf /tmp/aliyun-cli-linux-*-amd64.tgz
|
tar xzf /tmp/aliyun-cli-linux-*-amd64.tgz
|
||||||
mv aliyun /usr/local/bin
|
mv aliyun /usr/local/bin
|
||||||
|
|
||||||
|
|||||||
@@ -4,15 +4,16 @@
|
|||||||
## Desc: Installs CMake
|
## Desc: Installs CMake
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
# Source the helpers for use with the script
|
||||||
|
source $HELPER_SCRIPTS/install.sh
|
||||||
|
|
||||||
# Test to see if the software in question is already installed, if not install it
|
# Test to see if the software in question is already installed, if not install it
|
||||||
echo "Checking to see if the installer script has already been run"
|
echo "Checking to see if the installer script has already been run"
|
||||||
if command -v cmake; then
|
if command -v cmake; then
|
||||||
echo "cmake is already installed"
|
echo "cmake is already installed"
|
||||||
else
|
else
|
||||||
json=$(curl -s "https://api.github.com/repos/Kitware/CMake/releases")
|
downloadUrl=$(get_github_package_download_url "Kitware/CMake" "endswith(\"inux-x86_64.sh\")")
|
||||||
latest_tag=$(echo $json | jq -r '.[] | select(.prerelease==false).tag_name' | sort --unique --version-sort | grep -v "rc" | tail -1)
|
curl -sL ${downloadUrl} -o cmakeinstall.sh \
|
||||||
sh_url=$(echo $json | jq -r ".[] | select(.tag_name==\"${latest_tag}\").assets[].browser_download_url | select(endswith(\"inux-x86_64.sh\"))")
|
|
||||||
curl -sL ${sh_url} -o cmakeinstall.sh \
|
|
||||||
&& chmod +x cmakeinstall.sh \
|
&& chmod +x cmakeinstall.sh \
|
||||||
&& ./cmakeinstall.sh --prefix=/usr/local --exclude-subdir \
|
&& ./cmakeinstall.sh --prefix=/usr/local --exclude-subdir \
|
||||||
&& rm cmakeinstall.sh
|
&& rm cmakeinstall.sh
|
||||||
|
|||||||
@@ -16,9 +16,7 @@ apt-get update
|
|||||||
apt-get install -y --no-install-recommends esl-erlang
|
apt-get install -y --no-install-recommends esl-erlang
|
||||||
|
|
||||||
# Install rebar3
|
# Install rebar3
|
||||||
json=$(curl -sL "https://api.github.com/repos/erlang/rebar3/releases")
|
rebar3DownloadUrl=$(get_github_package_download_url "erlang/rebar3" "endswith(\"rebar3\")")
|
||||||
rebar3Version=$(echo $json | jq -r '.[] | select(.tag_name | contains("-") | not).tag_name' | sort -V | tail -n1)
|
|
||||||
rebar3DownloadUrl=$(echo $json | jq -r ".[] | select(.tag_name==\"$rebar3Version\").assets[].browser_download_url")
|
|
||||||
download_with_retries $rebar3DownloadUrl "/tmp"
|
download_with_retries $rebar3DownloadUrl "/tmp"
|
||||||
mv /tmp/rebar3 /usr/local/bin/rebar3
|
mv /tmp/rebar3 /usr/local/bin/rebar3
|
||||||
chmod +x /usr/local/bin/rebar3
|
chmod +x /usr/local/bin/rebar3
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ apt-get install -y firefox
|
|||||||
echo 'pref("intl.locale.requested","en_US");' >> "/usr/lib/firefox/browser/defaults/preferences/syspref.js"
|
echo 'pref("intl.locale.requested","en_US");' >> "/usr/lib/firefox/browser/defaults/preferences/syspref.js"
|
||||||
|
|
||||||
# Download and unpack latest release of geckodriver
|
# Download and unpack latest release of geckodriver
|
||||||
URL=$(curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | jq -r '.assets[].browser_download_url | select(test("linux64.tar.gz$"))')
|
downloadUrl=$(get_github_package_download_url "mozilla/geckodriver" "test(\"linux64.tar.gz$\")")
|
||||||
echo "Downloading geckodriver $URL"
|
echo "Downloading geckodriver $downloadUrl"
|
||||||
download_with_retries "$URL" "/tmp" geckodriver.tar.gz
|
download_with_retries "$downloadUrl" "/tmp" geckodriver.tar.gz
|
||||||
|
|
||||||
GECKODRIVER_DIR="/usr/local/share/gecko_driver"
|
GECKODRIVER_DIR="/usr/local/share/gecko_driver"
|
||||||
GECKODRIVER_BIN="$GECKODRIVER_DIR/geckodriver"
|
GECKODRIVER_BIN="$GECKODRIVER_DIR/geckodriver"
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ echo "git-lfs $GIT_LFS_REPO" >> $HELPER_SCRIPTS/apt-sources.txt
|
|||||||
#Install hub
|
#Install hub
|
||||||
tmp_hub="/tmp/hub"
|
tmp_hub="/tmp/hub"
|
||||||
mkdir -p "$tmp_hub"
|
mkdir -p "$tmp_hub"
|
||||||
url=$(curl -s https://api.github.com/repos/github/hub/releases/latest | jq -r '.assets[].browser_download_url | select(contains("hub-linux-amd64"))')
|
downloadUrl=$(get_github_package_download_url "github/hub" "contains(\"hub-linux-amd64\")")
|
||||||
download_with_retries "$url" "$tmp_hub"
|
download_with_retries "$downloadUrl" "$tmp_hub"
|
||||||
tar xzf "$tmp_hub"/hub-linux-amd64-*.tgz --strip-components 1 -C "$tmp_hub"
|
tar xzf "$tmp_hub"/hub-linux-amd64-*.tgz --strip-components 1 -C "$tmp_hub"
|
||||||
mv "$tmp_hub"/bin/hub /usr/local/bin
|
mv "$tmp_hub"/bin/hub /usr/local/bin
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
source $HELPER_SCRIPTS/install.sh
|
source $HELPER_SCRIPTS/install.sh
|
||||||
|
|
||||||
# Install GitHub CLI
|
# Install GitHub CLI
|
||||||
url=$(curl -s https://api.github.com/repos/cli/cli/releases/latest | jq -r '.assets[].browser_download_url|select(contains("linux") and contains("amd64") and contains(".deb"))')
|
downloadUrl=$(get_github_package_download_url "cli/cli" "contains(\"linux\") and contains(\"amd64\") and contains(\".deb\")")
|
||||||
download_with_retries $url "/tmp"
|
download_with_retries $downloadUrl "/tmp"
|
||||||
apt install /tmp/gh_*_linux_amd64.deb
|
apt install /tmp/gh_*_linux_amd64.deb
|
||||||
|
|
||||||
invoke_tests "CLI.Tools" "GitHub CLI"
|
invoke_tests "CLI.Tools" "GitHub CLI"
|
||||||
|
|||||||
@@ -7,11 +7,8 @@ source $HELPER_SCRIPTS/etc-environment.sh
|
|||||||
GRAALVM_ROOT=/usr/local/graalvm
|
GRAALVM_ROOT=/usr/local/graalvm
|
||||||
export GRAALVM_11_ROOT=$GRAALVM_ROOT/graalvm-ce-java11*
|
export GRAALVM_11_ROOT=$GRAALVM_ROOT/graalvm-ce-java11*
|
||||||
|
|
||||||
json=$(curl -s "https://api.github.com/repos/graalvm/graalvm-ce-builds/releases")
|
downloadUrl=$(get_github_package_download_url "graalvm/graalvm-ce-builds" "contains(\"graalvm-ce-java11-linux-amd64\") and endswith(\"tar.gz\")")
|
||||||
latest_tag=$(echo $json | jq -r '.[] | select(.prerelease==false).tag_name' | sort --unique --version-sort | tail -1)
|
download_with_retries "$downloadUrl" "/tmp" "graalvm-archive.tar.gz"
|
||||||
url=$(echo $json | jq -r ".[] | select(.tag_name==\"${latest_tag}\").assets[].browser_download_url | select(contains(\"graalvm-ce-java11-linux-amd64\") and endswith(\"tar.gz\"))")
|
|
||||||
|
|
||||||
download_with_retries "$url" "/tmp" "graalvm-archive.tar.gz"
|
|
||||||
mkdir $GRAALVM_ROOT
|
mkdir $GRAALVM_ROOT
|
||||||
tar -xzf "/tmp/graalvm-archive.tar.gz" -C $GRAALVM_ROOT
|
tar -xzf "/tmp/graalvm-archive.tar.gz" -C $GRAALVM_ROOT
|
||||||
|
|
||||||
|
|||||||
@@ -7,11 +7,8 @@
|
|||||||
source $HELPER_SCRIPTS/install.sh
|
source $HELPER_SCRIPTS/install.sh
|
||||||
|
|
||||||
KOTLIN_ROOT="/usr/share"
|
KOTLIN_ROOT="/usr/share"
|
||||||
|
downloadUrl=$(get_github_package_download_url "JetBrains/kotlin" "contains(\"kotlin-compiler\")")
|
||||||
kotlinReleasesUrl="https://api.github.com/repos/JetBrains/kotlin/releases"
|
download_with_retries "$downloadUrl" "/tmp"
|
||||||
latestRelease=$(curl -s $kotlinReleasesUrl | jq -r 'map(select(.prerelease == false)) | sort_by(.target_commitish)[-1]')
|
|
||||||
URL=$(echo $latestRelease | jq -r '.assets[].browser_download_url | select(contains("kotlin-compiler"))')
|
|
||||||
download_with_retries $URL "/tmp"
|
|
||||||
|
|
||||||
unzip -qq /tmp/kotlin-compiler*.zip -d $KOTLIN_ROOT
|
unzip -qq /tmp/kotlin-compiler*.zip -d $KOTLIN_ROOT
|
||||||
rm $KOTLIN_ROOT/kotlinc/bin/*.bat
|
rm $KOTLIN_ROOT/kotlinc/bin/*.bat
|
||||||
|
|||||||
@@ -4,8 +4,11 @@
|
|||||||
## Desc: Installs kubectl, helm, kustomize
|
## Desc: Installs kubectl, helm, kustomize
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
# Source the helpers for use with the script
|
||||||
|
source $HELPER_SCRIPTS/install.sh
|
||||||
|
|
||||||
# Install KIND
|
# Install KIND
|
||||||
URL=$(curl -s https://api.github.com/repos/kubernetes-sigs/kind/releases/latest | jq -r '.assets[].browser_download_url | select(contains("kind-linux-amd64"))')
|
URL=$(get_github_package_download_url "kubernetes-sigs/kind" "contains(\"kind-linux-amd64\")")
|
||||||
curl -L -o /usr/local/bin/kind $URL
|
curl -L -o /usr/local/bin/kind $URL
|
||||||
chmod +x /usr/local/bin/kind
|
chmod +x /usr/local/bin/kind
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,7 @@
|
|||||||
source $HELPER_SCRIPTS/install.sh
|
source $HELPER_SCRIPTS/install.sh
|
||||||
|
|
||||||
# Determine latest ORAS CLI version
|
# Determine latest ORAS CLI version
|
||||||
ORAS_CLI_LATEST_VERSION_URL=https://api.github.com/repos/oras-project/oras/releases/latest
|
ORAS_CLI_DOWNLOAD_URL=$(get_github_package_download_url "oras-project/oras" "endswith(\"linux_amd64.tar.gz\")")
|
||||||
ORAS_CLI_DOWNLOAD_URL=$(curl -sfL $ORAS_CLI_LATEST_VERSION_URL | jq -r '.assets[].browser_download_url | select(endswith("linux_amd64.tar.gz"))')
|
|
||||||
ORAS_CLI_ARCHIVE=$(basename $ORAS_CLI_DOWNLOAD_URL)
|
ORAS_CLI_ARCHIVE=$(basename $ORAS_CLI_DOWNLOAD_URL)
|
||||||
|
|
||||||
# Install ORAS CLI
|
# Install ORAS CLI
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
source $HELPER_SCRIPTS/install.sh
|
source $HELPER_SCRIPTS/install.sh
|
||||||
|
|
||||||
# Install latest sbt release
|
# Install latest sbt release
|
||||||
sbtVersion=$(curl -s -L "https://api.github.com/repos/sbt/sbt/releases" | jq -r '.[] | select(.prerelease==false).name' | sort --unique --version-sort | grep -ve "-.*" | tail -1)
|
downloadUrl=$(get_github_package_download_url "sbt/sbt" "endswith(\".tgz\")")
|
||||||
download_with_retries "https://github.com/sbt/sbt/releases/download/v${sbtVersion}/sbt-${sbtVersion}.tgz" "/tmp" "sbt.tgz"
|
download_with_retries "$downloadUrl" "/tmp" "sbt.tgz"
|
||||||
tar zxf /tmp/sbt.tgz -C /usr/share
|
tar zxf /tmp/sbt.tgz -C /usr/share
|
||||||
ln -s /usr/share/sbt/bin/sbt /usr/bin/sbt
|
ln -s /usr/share/sbt/bin/sbt /usr/bin/sbt
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,7 @@ SELENIUM_MAJOR_VERSION=$(get_toolset_value '.selenium.version')
|
|||||||
SELENIUM_BINARY_NAME=$(get_toolset_value '.selenium.binary_name')
|
SELENIUM_BINARY_NAME=$(get_toolset_value '.selenium.binary_name')
|
||||||
SELENIUM_JAR_PATH="/usr/share/java"
|
SELENIUM_JAR_PATH="/usr/share/java"
|
||||||
SELENIUM_JAR_NAME="$SELENIUM_BINARY_NAME.jar"
|
SELENIUM_JAR_NAME="$SELENIUM_BINARY_NAME.jar"
|
||||||
json=$(curl -s "https://api.github.com/repos/SeleniumHQ/selenium/releases?per_page=100")
|
SELENIUM_DOWNLOAD_URL=$(get_github_package_download_url "SeleniumHQ/selenium" "contains(\"${SELENIUM_BINARY_NAME}-${SELENIUM_MAJOR_VERSION}\") and endswith(\".jar\")")
|
||||||
SELENIUM_DOWNLOAD_URL=$(echo $json | jq -r ".[] | select(.prerelease==false).assets[].browser_download_url | select(contains(\"${SELENIUM_BINARY_NAME}-${SELENIUM_MAJOR_VERSION}\") and endswith(\".jar\"))" | head -1)
|
|
||||||
download_with_retries $SELENIUM_DOWNLOAD_URL $SELENIUM_JAR_PATH $SELENIUM_JAR_NAME
|
download_with_retries $SELENIUM_DOWNLOAD_URL $SELENIUM_JAR_PATH $SELENIUM_JAR_NAME
|
||||||
|
|
||||||
# Create an epmty file to retrive selenium version
|
# Create an epmty file to retrive selenium version
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ source $HELPER_SCRIPTS/install.sh
|
|||||||
YQ_BINARY=yq_linux_amd64
|
YQ_BINARY=yq_linux_amd64
|
||||||
|
|
||||||
# As per https://github.com/mikefarah/yq#wget
|
# As per https://github.com/mikefarah/yq#wget
|
||||||
YQ_URL=$(curl -s https://api.github.com/repos/mikefarah/yq/releases/latest | jq -r ".assets[].browser_download_url | select(endswith(\"$YQ_BINARY.tar.gz\"))")
|
YQ_URL=$(get_github_package_download_url "mikefarah/yq" "endswith(\"$YQ_BINARY.tar.gz\")")
|
||||||
echo "Downloading latest yq from $YQ_URL"
|
echo "Downloading latest yq from $YQ_URL"
|
||||||
|
|
||||||
download_with_retries "$YQ_URL" "/tmp" "${YQ_BINARY}.tar.gz"
|
download_with_retries "$YQ_URL" "/tmp" "${YQ_BINARY}.tar.gz"
|
||||||
|
|||||||
Reference in New Issue
Block a user