From 2028b45c4a4c3800a27684002d5f8b4e431b5ce1 Mon Sep 17 00:00:00 2001 From: Diego Molina Date: Sat, 18 Nov 2023 00:36:34 +0100 Subject: [PATCH 1/7] Bumping firefox --- NodeFirefox/Dockerfile.multi-arch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NodeFirefox/Dockerfile.multi-arch b/NodeFirefox/Dockerfile.multi-arch index ec549e640f..99e828fa35 100644 --- a/NodeFirefox/Dockerfile.multi-arch +++ b/NodeFirefox/Dockerfile.multi-arch @@ -24,7 +24,7 @@ USER root RUN echo "deb http://deb.debian.org/debian/ sid main" >> /etc/apt/sources.list \ && apt-get update -qqy \ && apt-get install libavcodec-extra -y \ - && wget https://snapshot.debian.org/archive/debian/20230924T210045Z/pool/main/f/firefox/firefox_117.0.1-1_`dpkg --print-architecture`.deb -O firefox.deb \ + && wget https://snapshot.debian.org/archive/debian/20231117T085632Z/pool/main/f/firefox/firefox_119.0.1-1_`dpkg --print-architecture`.deb -O firefox.deb \ && apt install ./firefox.deb -y \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/* ./firefox.deb @@ -40,7 +40,7 @@ RUN if [ $TARGETARCH = "arm" ] && [ $TARGETVARIANT = "v7" ]; then \ echo "*** BUILD ERROR: \$TARGETARCH must be arm64, amd64, or arm with \$TARGETVARIANT set to v7... exiting..." ; \ exit 1 ; \ fi ; \ - if [ "$ARCH" = "arm64" ]; then \ + if [ "$ARCH" = "arm64" ]; then \ wget --no-verbose -O /tmp/geckodriver.tar.gz https://github.com/mozilla/geckodriver/releases/download/v$GECKODRIVER_VERSION/geckodriver-v$GECKODRIVER_VERSION-linux-aarch64.tar.gz ; \ elif [ "$ARCH" = "armhf" ]; then \ wget --no-verbose -O /tmp/geckodriver.tar.gz https://github.com/jamesmortensen/geckodriver-arm-binaries/releases/download/v$GECKODRIVER_VERSION/geckodriver-v$GECKODRIVER_VERSION-linux-armv7l.tar.gz ; \ From bbff0218eae0379b06b47edab0e880c9eb140931 Mon Sep 17 00:00:00 2001 From: Fried Hoeben Date: Sat, 9 Dec 2023 11:11:21 +0100 Subject: [PATCH 2/7] fix build --- NodeChromium/Dockerfile | 4 ++-- NodeFirefox/Dockerfile.multi-arch | 25 ++++++++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/NodeChromium/Dockerfile b/NodeChromium/Dockerfile index 93e6a9d360..e76bdaada6 100644 --- a/NodeChromium/Dockerfile +++ b/NodeChromium/Dockerfile @@ -6,9 +6,9 @@ LABEL authors=${AUTHORS} USER root -# Install Chromium +# Install Chromium # RUN echo "deb http://http.us.debian.org/debian/ stable non-free contrib main" >> /etc/apt/sources.list \ -RUN echo "deb http://deb.debian.org/debian/ sid main" >> /etc/apt/sources.list \ +RUN echo "deb http://deb.debian.org/debian/ bullseye main" >> /etc/apt/sources.list \ && apt-get update -qqy \ # && apt-get -qqy install chromium=89.0.4389.82-1 \ # && apt-get -qqy install chromium=90.0.4430.212-1 \ diff --git a/NodeFirefox/Dockerfile.multi-arch b/NodeFirefox/Dockerfile.multi-arch index 99e828fa35..30ab5b2c64 100644 --- a/NodeFirefox/Dockerfile.multi-arch +++ b/NodeFirefox/Dockerfile.multi-arch @@ -21,12 +21,27 @@ USER root # && rm -rf /var/lib/apt/lists/* /var/cache/apt/* # Pulling Firefox from Debian Snapshots so we can control which version we use as latest -RUN echo "deb http://deb.debian.org/debian/ sid main" >> /etc/apt/sources.list \ +#RUN echo "deb http://deb.debian.org/debian/ sid main" >> /etc/apt/sources.list \ +# && apt-get update -qqy \ +# && apt-get install libavcodec-extra -y \ +# && wget https://snapshot.debian.org/archive/debian/20231117T085632Z/pool/main/f/firefox/firefox_119.0.1-1_`dpkg --print-architecture`.deb -O firefox.deb \ +# && apt install ./firefox.deb -y \ +# && rm -rf /var/lib/apt/lists/* /var/cache/apt/* ./firefox.deb + +ARG FIREFOX_OFFICIAL_PACKAGE=firefox-esr +ARG FIREFOX_VERSION=latest +RUN FIREFOX_DOWNLOAD_URL="https://download.mozilla.org/?product=firefox-$FIREFOX_VERSION-ssl&os=linux64&lang=en-US" \ && apt-get update -qqy \ - && apt-get install libavcodec-extra -y \ - && wget https://snapshot.debian.org/archive/debian/20231117T085632Z/pool/main/f/firefox/firefox_119.0.1-1_`dpkg --print-architecture`.deb -O firefox.deb \ - && apt install ./firefox.deb -y \ - && rm -rf /var/lib/apt/lists/* /var/cache/apt/* ./firefox.deb + && apt-get -qqy --no-install-recommends install ${FIREFOX_OFFICIAL_PACKAGE} libavcodec-extra \ + libgtk-3-dev libdbus-glib-1-dev \ + && rm -rf /var/lib/apt/lists/* /var/cache/apt/* \ + && wget --no-verbose -O /tmp/firefox.tar.bz2 $FIREFOX_DOWNLOAD_URL \ + && apt-get -y purge ${FIREFOX_OFFICIAL_PACKAGE} \ + && rm -rf /opt/firefox \ + && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ + && rm /tmp/firefox.tar.bz2 \ + && mv /opt/firefox /opt/firefox-$FIREFOX_VERSION \ + && ln -fs /opt/firefox-$FIREFOX_VERSION/firefox /usr/bin/firefox #============= # geckodriver From a5d30c0c3ccdfed207487552559f060623a03128 Mon Sep 17 00:00:00 2001 From: Fried Hoeben Date: Sat, 9 Dec 2023 12:33:10 +0100 Subject: [PATCH 3/7] Images based on Debian bookworm (12) Removes xfonts-cyrillic as it is no longer supported --- Base/Dockerfile | 10 +++++++--- NodeBase/Dockerfile | 3 +-- NodeChromium/Dockerfile | 2 +- NodeFirefox/99firefox-unstable | 7 +++++++ NodeFirefox/Dockerfile.multi-arch | 27 ++++++--------------------- 5 files changed, 22 insertions(+), 27 deletions(-) create mode 100644 NodeFirefox/99firefox-unstable diff --git a/Base/Dockerfile b/Base/Dockerfile index f74aa81c74..6f6bf178a8 100644 --- a/Base/Dockerfile +++ b/Base/Dockerfile @@ -5,7 +5,7 @@ #FROM ubuntu:focal-20220415 #FROM ubuntu:focal-20220531 #FROM ubuntu:focal-20230301 -FROM debian:bullseye +FROM debian:bookworm LABEL authors="Selenium " #================================================ @@ -33,7 +33,6 @@ RUN apt-get -qqy update \ acl \ bzip2 \ ca-certificates \ - openjdk-11-jre-headless \ tzdata \ sudo \ unzip \ @@ -42,6 +41,11 @@ RUN apt-get -qqy update \ curl \ supervisor \ gnupg2 \ + && mkdir -p /etc/apt/keyrings \ + && wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | tee /etc/apt/keyrings/adoptium.asc \ + && echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list \ + && apt-get update -y \ + && apt-get install temurin-11-jre -y \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/* #=================== @@ -51,7 +55,7 @@ RUN if [ $TARGETARCH = "arm" ] && [ $TARGETVARIANT = "v7" ]; then \ else \ export ARCH=$TARGETARCH ; \ fi \ - && sed -i 's/securerandom\.source=file:\/dev\/random/securerandom\.source=file:\/dev\/urandom/' ./usr/lib/jvm/java-11-openjdk-$ARCH/conf/security/java.security + && sed -i 's/securerandom\.source=file:\/dev\/random/securerandom\.source=file:\/dev\/urandom/' ./usr/lib/jvm/temurin-11-jre-$ARCH/conf/security/java.security #=================== diff --git a/NodeBase/Dockerfile b/NodeBase/Dockerfile index 2e596767ff..40f7634d0b 100644 --- a/NodeBase/Dockerfile +++ b/NodeBase/Dockerfile @@ -58,7 +58,7 @@ RUN apt-get update -qqy \ #================ # libfontconfig ~1 MB # libfreetype6 ~1 MB -# xfonts-cyrillic ~2 MB +# xfonts-cyrillic ~2 MB (no longer supported on Debian bookworm) # xfonts-scalable ~2 MB # fonts-liberation ~3 MB # fonts-ipafont-gothic ~13 MB @@ -78,7 +78,6 @@ RUN apt-get -qqy update \ && apt-get -qqy --no-install-recommends install \ libfontconfig \ libfreetype6 \ - xfonts-cyrillic \ xfonts-scalable \ fonts-liberation \ fonts-ipafont-gothic \ diff --git a/NodeChromium/Dockerfile b/NodeChromium/Dockerfile index e76bdaada6..775bd9fc1c 100644 --- a/NodeChromium/Dockerfile +++ b/NodeChromium/Dockerfile @@ -8,7 +8,7 @@ USER root # Install Chromium # RUN echo "deb http://http.us.debian.org/debian/ stable non-free contrib main" >> /etc/apt/sources.list \ -RUN echo "deb http://deb.debian.org/debian/ bullseye main" >> /etc/apt/sources.list \ +RUN echo "deb http://deb.debian.org/debian/ bookworm main" >> /etc/apt/sources.list \ && apt-get update -qqy \ # && apt-get -qqy install chromium=89.0.4389.82-1 \ # && apt-get -qqy install chromium=90.0.4430.212-1 \ diff --git a/NodeFirefox/99firefox-unstable b/NodeFirefox/99firefox-unstable new file mode 100644 index 0000000000..909fd62746 --- /dev/null +++ b/NodeFirefox/99firefox-unstable @@ -0,0 +1,7 @@ +Package: * +Pin: release a=stable +Pin-Priority: 900 + +Package: * +Pin: release a=unstable +Pin-Priority: 10 diff --git a/NodeFirefox/Dockerfile.multi-arch b/NodeFirefox/Dockerfile.multi-arch index 30ab5b2c64..8dfb0cfda6 100644 --- a/NodeFirefox/Dockerfile.multi-arch +++ b/NodeFirefox/Dockerfile.multi-arch @@ -20,28 +20,13 @@ USER root # && apt-get -qqy install firefox libavcodec-extra \ # && rm -rf /var/lib/apt/lists/* /var/cache/apt/* -# Pulling Firefox from Debian Snapshots so we can control which version we use as latest -#RUN echo "deb http://deb.debian.org/debian/ sid main" >> /etc/apt/sources.list \ -# && apt-get update -qqy \ -# && apt-get install libavcodec-extra -y \ -# && wget https://snapshot.debian.org/archive/debian/20231117T085632Z/pool/main/f/firefox/firefox_119.0.1-1_`dpkg --print-architecture`.deb -O firefox.deb \ -# && apt install ./firefox.deb -y \ -# && rm -rf /var/lib/apt/lists/* /var/cache/apt/* ./firefox.deb - -ARG FIREFOX_OFFICIAL_PACKAGE=firefox-esr -ARG FIREFOX_VERSION=latest -RUN FIREFOX_DOWNLOAD_URL="https://download.mozilla.org/?product=firefox-$FIREFOX_VERSION-ssl&os=linux64&lang=en-US" \ +COPY 99firefox-unstable /etc/apt/preferences.d/99firefox-unstable +RUN echo "deb http://deb.debian.org/debian/ unstable main contrib non-free" >> /etc/apt/sources.list \ && apt-get update -qqy \ - && apt-get -qqy --no-install-recommends install ${FIREFOX_OFFICIAL_PACKAGE} libavcodec-extra \ - libgtk-3-dev libdbus-glib-1-dev \ - && rm -rf /var/lib/apt/lists/* /var/cache/apt/* \ - && wget --no-verbose -O /tmp/firefox.tar.bz2 $FIREFOX_DOWNLOAD_URL \ - && apt-get -y purge ${FIREFOX_OFFICIAL_PACKAGE} \ - && rm -rf /opt/firefox \ - && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ - && rm /tmp/firefox.tar.bz2 \ - && mv /opt/firefox /opt/firefox-$FIREFOX_VERSION \ - && ln -fs /opt/firefox-$FIREFOX_VERSION/firefox /usr/bin/firefox + && apt-get install libavcodec-extra -y \ + && apt-get install -t unstable firefox -y \ + && apt-get purge firefox-esr \ + && rm -rf /var/lib/apt/lists/* /var/cache/apt/* #============= # geckodriver From b9f12e35917afad9ef2adbab77288916de2b7a54 Mon Sep 17 00:00:00 2001 From: Fried Hoeben Date: Sat, 9 Dec 2023 13:54:16 +0100 Subject: [PATCH 4/7] add some more config --- NodeFirefox/Dockerfile.multi-arch | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NodeFirefox/Dockerfile.multi-arch b/NodeFirefox/Dockerfile.multi-arch index 8dfb0cfda6..eb0ad87299 100644 --- a/NodeFirefox/Dockerfile.multi-arch +++ b/NodeFirefox/Dockerfile.multi-arch @@ -61,3 +61,5 @@ USER 1200 # Dumping Browser name and version for config #============================================ RUN echo "firefox" > /opt/selenium/browser_name +RUN firefox --version | awk '{print $3}' > /opt/selenium/browser_version +RUN echo "\"moz:firefoxOptions\": {\"binary\": \"/usr/bin/firefox\"}" > /opt/selenium/browser_binary_location From 72904e2f9666267687ddc241d3a37fd143adc6a0 Mon Sep 17 00:00:00 2001 From: Fried Hoeben Date: Sat, 9 Dec 2023 14:43:06 +0100 Subject: [PATCH 5/7] add some more config chromium --- NodeChrome/Dockerfile | 2 ++ NodeChromium/Dockerfile | 2 ++ 2 files changed, 4 insertions(+) diff --git a/NodeChrome/Dockerfile b/NodeChrome/Dockerfile index 3f2e72845b..a3096c0bb0 100644 --- a/NodeChrome/Dockerfile +++ b/NodeChrome/Dockerfile @@ -59,3 +59,5 @@ RUN if [ ! -z "$CHROME_DRIVER_VERSION" ]; \ # Dumping Browser name and version for config #============================================ RUN echo "chrome" > /opt/selenium/browser_name +RUN google-chrome --version | awk '{print $3}' > /opt/selenium/browser_version +RUN echo "\"goog:chromeOptions\": {\"binary\": \"/usr/bin/google-chrome\"}" > /opt/selenium/browser_binary_location diff --git a/NodeChromium/Dockerfile b/NodeChromium/Dockerfile index 775bd9fc1c..472c7e725a 100644 --- a/NodeChromium/Dockerfile +++ b/NodeChromium/Dockerfile @@ -32,6 +32,8 @@ RUN apt-get update -qqy \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/* RUN echo "chromium" > /opt/selenium/browser_name +RUN google-chrome --version | awk '{print $3}' > /opt/selenium/browser_version +RUN echo "\"goog:chromeOptions\": {\"binary\": \"/usr/bin/chromium\"}" > /opt/selenium/browser_binary_location USER 1200 From 63466e908e0fa84b579f999c59fa3da7c80bc19b Mon Sep 17 00:00:00 2001 From: Fried Hoeben Date: Sat, 9 Dec 2023 14:50:18 +0100 Subject: [PATCH 6/7] sync with trunk --- NodeFirefox/Dockerfile | 17 ++++++++++++++--- NodeFirefox/Dockerfile.multi-arch | 12 +++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/NodeFirefox/Dockerfile b/NodeFirefox/Dockerfile index 698fe6338f..e79f641be3 100644 --- a/NodeFirefox/Dockerfile +++ b/NodeFirefox/Dockerfile @@ -12,11 +12,10 @@ USER root ARG FIREFOX_VERSION=latest RUN FIREFOX_DOWNLOAD_URL=$(if [ $FIREFOX_VERSION = "latest" ] || [ $FIREFOX_VERSION = "beta-latest" ] || [ $FIREFOX_VERSION = "nightly-latest" ] || [ $FIREFOX_VERSION = "devedition-latest" ] || [ $FIREFOX_VERSION = "esr-latest" ]; then echo "https://download.mozilla.org/?product=firefox-$FIREFOX_VERSION-ssl&os=linux64&lang=en-US"; else echo "https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2"; fi) \ && apt-get update -qqy \ - && apt-get -qqy --no-install-recommends install firefox libavcodec-extra \ + && apt-get -qqy --no-install-recommends install libavcodec-extra \ libgtk-3-dev libdbus-glib-1-dev \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/* \ && wget --no-verbose -O /tmp/firefox.tar.bz2 $FIREFOX_DOWNLOAD_URL \ - && apt-get -y purge firefox \ && rm -rf /opt/firefox \ && tar -C /opt -xjf /tmp/firefox.tar.bz2 \ && rm /tmp/firefox.tar.bz2 \ @@ -37,9 +36,21 @@ RUN GK_VERSION=$(if [ ${GECKODRIVER_VERSION:-latest} = "latest" ]; then echo "0. && chmod 755 /opt/geckodriver-$GK_VERSION \ && ln -fs /opt/geckodriver-$GK_VERSION /usr/bin/geckodriver +# Workaround for issue launch Firefox Webdriver "Failed to read marionette port" +RUN mkdir -p /home/seluser/.cache /home/seluser/.mozilla /.cache \ + && chmod 777 /home/seluser/.cache /home/seluser/.mozilla /.cache + USER 1200 +RUN if ! whoami &> /dev/null; then \ + if [ -w /tmp/passwd ]; then \ + echo "${USER_NAME:-default}:x:$(id -u):0:${USER_NAME:-default} user:/home/seluser:/tmp:/bin/bash" >> /tmp/passwd; \ + fi \ +fi + #============================================ -# Dumping Browser name and version for config +# Dumping Browser information for config #============================================ RUN echo "firefox" > /opt/selenium/browser_name +RUN firefox --version | awk '{print $3}' > /opt/selenium/browser_version +RUN echo "\"moz:firefoxOptions\": {\"binary\": \"/usr/bin/firefox\"}" > /opt/selenium/browser_binary_location diff --git a/NodeFirefox/Dockerfile.multi-arch b/NodeFirefox/Dockerfile.multi-arch index eb0ad87299..10f0e7d4c4 100644 --- a/NodeFirefox/Dockerfile.multi-arch +++ b/NodeFirefox/Dockerfile.multi-arch @@ -55,10 +55,20 @@ RUN if [ $TARGETARCH = "arm" ] && [ $TARGETVARIANT = "v7" ]; then \ ln -s /opt/geckodriver-bin/geckodriver /usr/local/bin/geckodriver ; \ chmod 755 /usr/local/bin/geckodriver +# Workaround for issue launch Firefox Webdriver "Failed to read marionette port" +RUN mkdir -p /home/seluser/.cache /home/seluser/.mozilla /.cache \ + && chmod 777 /home/seluser/.cache /home/seluser/.mozilla /.cache + USER 1200 +RUN if ! whoami &> /dev/null; then \ + if [ -w /tmp/passwd ]; then \ + echo "${USER_NAME:-default}:x:$(id -u):0:${USER_NAME:-default} user:/home/seluser:/tmp:/bin/bash" >> /tmp/passwd; \ + fi \ +fi + #============================================ -# Dumping Browser name and version for config +# Dumping Browser information for config #============================================ RUN echo "firefox" > /opt/selenium/browser_name RUN firefox --version | awk '{print $3}' > /opt/selenium/browser_version From 989c7d9d69295734e5db2fc053a188e713b36c48 Mon Sep 17 00:00:00 2001 From: Fried Hoeben Date: Sat, 9 Dec 2023 17:08:30 +0100 Subject: [PATCH 7/7] sync with trunk some more --- NodeBase/generate_config | 3 ++- NodeBase/start-selenium-node.sh | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/NodeBase/generate_config b/NodeBase/generate_config index 9537435924..5a8e56c614 100755 --- a/NodeBase/generate_config +++ b/NodeBase/generate_config @@ -62,9 +62,10 @@ elif [[ "${SE_NODE_BROWSER_NAME}" == "firefox" ]]; then elif [[ "${SE_NODE_BROWSER_NAME}" == "MicrosoftEdge" ]]; then SE_NODE_BROWSER_VERSION=$(short_version $(microsoft-edge --version | awk '{print $3}')) fi +SE__BROWSER_BINARY_LOCATION=$(cat /opt/selenium/browser_binary_location) if [[ -z "$SE_NODE_STEREOTYPE" ]]; then -SE_NODE_STEREOTYPE="{\"browserName\": \"${SE_NODE_BROWSER_NAME}\", \"browserVersion\": \"${SE_NODE_BROWSER_VERSION}\", \"platformName\": \"Linux\"}" +SE_NODE_STEREOTYPE="{\"browserName\": \"${SE_NODE_BROWSER_NAME}\", \"browserVersion\": \"${SE_NODE_BROWSER_VERSION}\", \"platformName\": \"Linux\", ${SE__BROWSER_BINARY_LOCATION}}" else SE_NODE_STEREOTYPE="$SE_NODE_STEREOTYPE" fi diff --git a/NodeBase/start-selenium-node.sh b/NodeBase/start-selenium-node.sh index fc5dc2f555..42a277d41e 100755 --- a/NodeBase/start-selenium-node.sh +++ b/NodeBase/start-selenium-node.sh @@ -31,6 +31,11 @@ if [ ! -z "$SE_OPTS" ]; then echo "Appending Selenium options: ${SE_OPTS}" fi +if [ ! -z "$SE_NODE_SESSION_TIMEOUT" ]; then + SE_OPTS="$SE_OPTS --session-timeout $SE_NODE_SESSION_TIMEOUT" + echo "Appending Selenium node session timeout via SE_OPTS: ${SE_OPTS}" +fi + if [ "$GENERATE_CONFIG" = true ]; then echo "Generating Selenium Config" /opt/bin/generate_config @@ -40,7 +45,8 @@ EXTRA_LIBS="/opt/selenium/selenium-http-jdk-client.jar" if [ ! -z "$SE_ENABLE_TRACING" ]; then EXTERNAL_JARS=$(