#!/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