From 473eacb052865d8845e2e32adb2ce3973e50f7cb Mon Sep 17 00:00:00 2001 From: montehurd Date: Wed, 3 May 2023 16:59:21 -0700 Subject: [PATCH 1/2] Dynamically determine Chromium arm64 binary links Bug: T335931 --- Dockerfile.visual-regression | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/Dockerfile.visual-regression b/Dockerfile.visual-regression index c06ed1c3..f2abda1e 100644 --- a/Dockerfile.visual-regression +++ b/Dockerfile.visual-regression @@ -9,23 +9,26 @@ ENV \ RUN apt-get update && \ apt-get install -y git sudo software-properties-common -# Find links to Chromium arm64 binaries here: http://snapshot.debian.org/binary/chromium/ -ENV CHROMIUM_ARM_URL http://snapshot.debian.org/archive/debian-security/20220902T180902Z/pool/updates/main/c/chromium/ -ENV CHROMIUM_ARM_BINARY chromium_105.0.5195.52-1~deb11u1_arm64.deb -ENV CHROMIUM_ARM_COMMON_BINARY chromium-common_105.0.5195.52-1~deb11u1_arm64.deb - -RUN /bin/bash -c 'set -ex && \ +RUN set -ex && \ ARCH=`uname -m` && \ - if [ "$ARCH" == "x86_64" ]; then \ + if [ "$ARCH" = "x86_64" ]; then \ sudo npm install -g --unsafe-perm=true --allow-root backstopjs@${BACKSTOPJS_VERSION}; \ else \ - sudo PUPPETEER_SKIP_DOWNLOAD=true PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install -g --unsafe-perm=true --allow-root backstopjs@${BACKSTOPJS_VERSION} && \ - wget "${CHROMIUM_ARM_URL}${CHROMIUM_ARM_COMMON_BINARY}" \ - "${CHROMIUM_ARM_URL}${CHROMIUM_ARM_BINARY}" && \ - apt install -y "./${CHROMIUM_ARM_COMMON_BINARY}" \ - "./${CHROMIUM_ARM_BINARY}" && \ + sudo PUPPETEER_SKIP_DOWNLOAD=true PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install -g --unsafe-perm=true --allow-root backstopjs@${BACKSTOPJS_VERSION} puppeteer-chromium-version-finder chromium-version-deb-finder && \ + NODE_PATH="$(npm root -g):$(npm root -g)/backstopjs/node_modules" node -e " \ + const versionFinder = require('puppeteer-chromium-version-finder'); \ + const debFinder = require('chromium-version-deb-finder'); \ + (async () => { \ + const version = await versionFinder.getPuppeteerChromiumVersion(); \ + const debUrls = await debFinder.getDebUrlsForVersionAndArch(version.MAJOR, version.MINOR, 'arm64'); \ + console.log(debUrls.join('\n')); \ + })(); \ + " | \ + xargs -I % sh -c 'set -x; echo "Downloading: %"; wget %; echo "Downloaded: %"' && \ + apt install -y ./*.deb && \ + rm -f ./*.deb && \ sudo test -f /usr/bin/chromium && sudo ln -s /usr/bin/chromium /usr/bin/chromium-browser && sudo ln -s /usr/bin/chromium /usr/bin/chrome; \ - fi' + fi RUN wget https://dl-ssl.google.com/linux/linux_signing_key.pub && sudo apt-key add linux_signing_key.pub RUN sudo add-apt-repository "deb http://dl.google.com/linux/chrome/deb/ stable main" From b8e2270b36f7545c86df9a50aeb31c36dd54b20e Mon Sep 17 00:00:00 2001 From: montehurd Date: Tue, 25 Jul 2023 13:31:38 -0700 Subject: [PATCH 2/2] Fix arm64 Chromium .deb fetching --- Dockerfile.visual-regression | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Dockerfile.visual-regression b/Dockerfile.visual-regression index f2abda1e..3dfbac8f 100644 --- a/Dockerfile.visual-regression +++ b/Dockerfile.visual-regression @@ -10,21 +10,23 @@ RUN apt-get update && \ apt-get install -y git sudo software-properties-common RUN set -ex && \ + DEBIAN_VERSION=$(cat /etc/os-release | grep VERSION_ID | cut -d '=' -f2 | tr -d '"') && \ + export DEBIAN_VERSION=$DEBIAN_VERSION && \ ARCH=`uname -m` && \ if [ "$ARCH" = "x86_64" ]; then \ sudo npm install -g --unsafe-perm=true --allow-root backstopjs@${BACKSTOPJS_VERSION}; \ else \ - sudo PUPPETEER_SKIP_DOWNLOAD=true PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install -g --unsafe-perm=true --allow-root backstopjs@${BACKSTOPJS_VERSION} puppeteer-chromium-version-finder chromium-version-deb-finder && \ + sudo PUPPETEER_SKIP_DOWNLOAD=true PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install -g --unsafe-perm=true --allow-root backstopjs@${BACKSTOPJS_VERSION} puppeteer-chromium-version-finder@^1.0.1 chromium-version-deb-finder@^2.0.1 && \ NODE_PATH="$(npm root -g):$(npm root -g)/backstopjs/node_modules" node -e " \ const versionFinder = require('puppeteer-chromium-version-finder'); \ const debFinder = require('chromium-version-deb-finder'); \ (async () => { \ const version = await versionFinder.getPuppeteerChromiumVersion(); \ - const debUrls = await debFinder.getDebUrlsForVersionAndArch(version.MAJOR, version.MINOR, 'arm64'); \ + const debUrls = await debFinder.getDebUrlsForVersionAndArch(version.MAJOR, version.MINOR, process.env.DEBIAN_VERSION, 'arm64'); \ console.log(debUrls.join('\n')); \ })(); \ " | \ - xargs -I % sh -c 'set -x; echo "Downloading: %"; wget %; echo "Downloaded: %"' && \ + xargs -I % sh -c 'set -x; echo "Downloading: %"; wget -c -t 10 -w 10 -T 120 %; echo "Downloaded: %"' && \ apt install -y ./*.deb && \ rm -f ./*.deb && \ sudo test -f /usr/bin/chromium && sudo ln -s /usr/bin/chromium /usr/bin/chromium-browser && sudo ln -s /usr/bin/chromium /usr/bin/chrome; \