[Ubuntu] Implement helper to get GitHub package download URL (#4947)

This commit is contained in:
Dibir Magomedsaygitov
2022-02-08 19:41:23 +03:00
committed by GitHub
parent cb8931646f
commit 404da76e17
14 changed files with 47 additions and 34 deletions

View File

@@ -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
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"