From 4ab75d30402e43b44ca853495246fcde5ad11f74 Mon Sep 17 00:00:00 2001 From: Andrejs Cunskis Date: Mon, 22 Aug 2022 16:44:36 +0300 Subject: [PATCH] Cache chromium driver version --- scripts/cache-google-chrome | 94 +++++++++++++++++-------------------- scripts/install-chrome | 37 +++++++++------ 2 files changed, 66 insertions(+), 65 deletions(-) diff --git a/scripts/cache-google-chrome b/scripts/cache-google-chrome index 627a522..99a9ebd 100755 --- a/scripts/cache-google-chrome +++ b/scripts/cache-google-chrome @@ -8,6 +8,41 @@ set -e export DEBIAN_FRONTEND=noninteractive +function save-package() { + local PKG=$1 + local DEB=$2 + local LATEST_VERSION=$3 + local SOURCE_DEB=${4:-$DEB} + + local URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PKG}/${LATEST_VERSION}/${DEB}" + + echo "Checking if cache has ${DEB}" + local FILE_CHECK=$(curl --silent --location --head --output /dev/null --write "%{http_code}\\n" "$URL") + + if [ "$FILE_CHECK" -eq "200" ]; then + echo "Latest version ${LATEST_VERSION} is already cached!" + else + echo "Downloading latest ${PKG} version (${LATEST_VERSION}) in apt repository..." + cd /tmp + apt-get download $PKG + + if ! [ -f "${SOURCE_DEB}" ]; then + echo "Downloaded file didn't have expected name: ${SOURCE_DEB}" + ls + exit 1 + fi + + if [ "$SOURCE_DEB" != "$DEB" ]; then + mv "$SOURCE_DEB" "$DEB" + fi + + echo "Transferring $PKG to GitLab packages" + curl --fail --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ + --upload-file "./{$DEB}" \ + "$URL" + fi +} + function cache-chrome() { PKG=google-chrome-stable @@ -22,71 +57,28 @@ function cache-chrome() { LATEST_VERSION=$(apt-cache show $PKG | grep Version | sort | tail -1 | sed -e "s/Version: //") CHROME_DEB="google-chrome-stable_${LATEST_VERSION}_amd64.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 --fail --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ - --upload-file "./{$CHROME_DEB}" \ - "$CHROME_URL" - fi + save-package "$PKG" "$CHROME_DEB" "$LATEST_VERSION" } function cache-chromium() { PKG=chromium + PKG_DRIVER=chromium-driver echo "Checking for latest Chromium version in apt repository..." LATEST_VERSION=$(apt-cache show $PKG | grep Version | sort | tail -1 | sed -e "s/Version: //") VERSION_NUMBER=$(echo $LATEST_VERSION | sed -e "s/~deb.*//") # remove debian version part to have chrome and chromium compatible version numbers - CHROMIUM_DEB="chromium_${VERSION_NUMBER}_arm64.deb" - CHROMIUM_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PKG}/${VERSION_NUMBER}/${CHROMIUM_DEB}" - - echo "Checking if cache has ${CHROMIUM_DEB}" - FILE_CHECK=$(curl --silent --location --head --output /dev/null --write "%{http_code}\\n" "$CHROMIUM_URL") - - if [ "$FILE_CHECK" -eq "200" ]; then - echo "Latest version ${LATEST_VERSION} is already cached!" - else - echo "Downloading latest Chromium version (${LATEST_VERSION}) from apt repository..." - cd /tmp - apt-get download "$PKG" - - DEB_FILE="chromium_${LATEST_VERSION}_arm64.deb" - - if ! [ -f "$DEB_FILE" ]; then - echo "Downloaded file didn't have expected name: ${DEB_FILE}" - ls - exit 1 - fi - - mv "$DEB_FILE" "$CHROMIUM_DEB" - - echo "Transferring ${CHROMIUM_DEB} to GitLab packages" - curl --fail --header "JOB-TOKEN: ${CI_JOB_TOKEN}" \ - --upload-file "./{$CHROMIUM_DEB}" \ - "$CHROMIUM_URL" - fi + CHROMIUM_DEB="${PKG}_${VERSION_NUMBER}_arm64.deb" + CHROMIUM_DRIVER_DEB="${PKG_DRIVER}_${VERSION_NUMBER}_arm64.deb" + + save-package "$PKG" "$CHROMIUM_DEB" "$VERSION_NUMBER" "${PKG}_${LATEST_VERSION}_arm64.deb" + save-package "$PKG_DRIVER" "$CHROMIUM_DRIVER_DEB" "$VERSION_NUMBER" "${PKG_DRIVER}_${LATEST_VERSION}_arm64.deb" } echo "Updating system utils" apt-get -y -qq update -apt-get -y install apt-utils curl gnupg2 > /dev/null +apt-get -y install apt-utils curl gnupg2 >/dev/null if [ "$TARGETARCH" == "amd64" ]; then cache-chrome diff --git a/scripts/install-chrome b/scripts/install-chrome index b4eb144..3b0e7e5 100755 --- a/scripts/install-chrome +++ b/scripts/install-chrome @@ -15,24 +15,33 @@ function build_debian() { # We hard code the URL rather than using $CI_API_V4_URL $CI_PROJECT_ID, # because we would need to forward those variables - CHROME_DOWNLOAD_URL_BASE="https://gitlab.com/api/v4/projects/1075790/packages/generic/${PKG}" - CHROME_DEB="${PKG}_${CHROME_VERSION}_${ARCH}.deb" - CHROME_URL="${CHROME_DOWNLOAD_URL_BASE}/${CHROME_VERSION}/${CHROME_DEB}" + DOWNLOAD_URL_BASE="https://gitlab.com/api/v4/projects/1075790/packages/generic/${PKG}" + BROWSER_DEB="${PKG}_${CHROME_VERSION}_${ARCH}.deb" + BROWSER_URL="${DOWNLOAD_URL_BASE}/${CHROME_VERSION}/${BROWSER_DEB}" - echo "Downloading deb file from Package registry: $CHROME_URL" - curl --silent --show-error --fail -O $CHROME_URL - dpkg -i ./$CHROME_DEB || true + echo "Installing browser" + curl --silent --show-error --fail -O "$BROWSER_URL" + dpkg -i "./${BROWSER_DEB}" || true apt-get install -f -y - rm -f $CHROME_DEB + rm -f "$BROWSER_DEB" - rm -rf /var/lib/apt/lists/* + echo "Installing webdriver" + if [ "${ARCH}" == "amd64" ]; then + CHROME_VERSION_BASE=$(echo $CHROME_VERSION | awk -F "." '{print $1 "." $2 "." $3}') + CHROME_DRIVER_VERSION=$(curl -q https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION_BASE) - # Install ChromeDriver - CHROME_VERSION_BASE=$(echo $CHROME_VERSION | awk -F "." '{print $1 "." $2 "." $3}') - CHROME_DRIVER_VERSION=$(curl -q https://chromedriver.storage.googleapis.com/LATEST_RELEASE_$CHROME_VERSION_BASE) - wget -q https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip - unzip chromedriver_linux64.zip -d /usr/local/bin - rm -f chromedriver_linux64.zip + wget -q https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip + unzip chromedriver_linux64.zip -d /usr/local/bin + rm -f chromedriver_linux64.zip + else + DRIVER_DEB="${PKG}-driver_${CHROME_VERSION}_${ARCH}.deb" + DRIVER_URL="${DOWNLOAD_URL_BASE}/${CHROME_VERSION}/${DRIVER_DEB}" + + curl --silent --show-error --fail -O "$DRIVER_URL" + dpkg -i "./${DRIVER_DEB}" || true + apt-get install -f -y + rm -f "$DRIVER_DEB" + fi apt-get autoremove -yq apt-get clean -yqq