gitlab-build-images/scripts/cache-google-chrome
Balasankar "Balu" C fbcb5bfbea
Support caching rpm of google-chrome also
Signed-off-by: Balasankar "Balu" C <balasankar@gitlab.com>
2022-08-05 13:18:46 +05:30

106 lines
3.5 KiB
Bash
Executable file

#!/bin/bash
# This script attempts to copy the latest version of the Google Chrome Debian
# package into our own package registry. Google yanks old versions regularly,
# making it hard to keep up with all the new versions.
set -e
PKG=google-chrome-stable
function build_debian() {
echo "Handling deb package"
export DEBIAN_FRONTEND=noninteractive
apt-get -y update
apt-get -y install apt-utils curl bash gnupg2
curl -sS -L https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
echo "deb [arch=$(dpkg --print-architecture)] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list
echo "Updating apt to get Google Chrome packages..."
apt-get -y -q update
echo "Checking for latest Chrome version in apt repository..."
LATEST_VERSION=$(apt-cache show $PKG | grep Version | sort | tail -1 | sed -e "s/Version: //")
CHROME_DEB="google-chrome-stable_${LATEST_VERSION}_$(dpkg --print-architecture).deb"
CHROME_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PKG}/${LATEST_VERSION}/${CHROME_DEB}"
echo "Checking if cache has $CHROME_DEB"
FILE_CHECK=$(curl --silent --location --head --output /dev/null --write "%{http_code}\\n" "$CHROME_URL")
if [ "$FILE_CHECK" -eq "200" ]; then
echo "Latest version $LATEST_VERSION is already cached!"
else
echo "Downloading latest Chrome version ($LATEST_VERSION) in apt repository..."
cd /tmp
apt-get download $PKG
if ! [ -f "$CHROME_DEB" ]; then
echo "Downloaded file didn't have expected name: $CHROME_DEB"
ls
exit 1
fi
echo "Transferring $CHROME_DEB to GitLab packages"
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \
--upload-file "./{$CHROME_DEB}" \
"$CHROME_URL"
fi
}
function build_ubi() {
{ awk '{$1=$1};1' | tee -a /etc/yum.repos.d/google-chrome.repo; } <<- EOM
[google-chrome]
name=Google Chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$(arch)
enabled=1
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
EOM
yum update -y
# To download rpm file
yum install -y yum-utils
echo "Checking for latest Chrome version in yum repository..."
LATEST_VERSION_STRING=$(yum info $PKG | awk '/Version/ { print $NF}')
LATEST_RELEASE_STRING=$(yum info $PKG | awk '/Release/ { print $NF}')
LATEST_VERSION="${LATEST_VERSION_STRING}-${LATEST_RELEASE_STRING}"
CHROME_RPM="google-chrome-stable-${LATEST_VERSION}.$(arch).rpm"
CHROME_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PKG}/${LATEST_VERSION}/${CHROME_RPM}"
echo "Checking if cache has $CHROME_RPM"
FILE_CHECK=$(curl --silent --location --head --output /dev/null --write "%{http_code}\\n" "$CHROME_URL")
if [ "$FILE_CHECK" -eq "200" ]; then
echo "Latest version $LATEST_VERSION is already cached!"
else
echo "Downloading latest Chrome version ($LATEST_VERSION) in yum repository..."
cd /tmp
yumdownloader $PKG
if ! [ -f "$CHROME_RPM" ]; then
echo "Downloaded file didn't have expected name: $CHROME_RPM"
ls
exit 1
fi
echo "Transferring $CHROME_RPM to GitLab packages"
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \
--upload-file "./{$CHROME_RPM}" \
"$CHROME_URL"
fi
}
BASE_IMAGE=${BASE_IMAGE:-debian:bullseye-slim}
if [[ $BASE_IMAGE =~ debian ]]; then
build_debian "$@"
elif [[ $BASE_IMAGE =~ ubi ]]; then
build_ubi "$@"
fi