Skip to content

Commit

Permalink
Docker: Firefox stable latest version for ARM64 (#2692)
Browse files Browse the repository at this point in the history
Signed-off-by: Viet Nguyen Duc <[email protected]>
  • Loading branch information
VietND96 authored Mar 5, 2025
1 parent 70ac588 commit 2e07b0c
Show file tree
Hide file tree
Showing 11 changed files with 123 additions and 69 deletions.
42 changes: 21 additions & 21 deletions .github/workflows/helm-chart-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,68 +40,68 @@ jobs:
matrix:
include:
- k8s-version: 'v1.26.15'
test-strategy: disabled
cluster: 'minikube'
helm-version: 'v3.11.3'
docker-version: '26.1.4'
python-version: '3.8'
python-version: '3.9'
test-upgrade: true
service-mesh: false
os: ubuntu-24.04
os: ubuntu-22.04
test-strategy: disabled
- k8s-version: 'v1.27.16'
test-strategy: job
cluster: 'minikube'
helm-version: 'v3.12.3'
docker-version: '26.1.4'
python-version: '3.9'
test-upgrade: true
service-mesh: true
os: ubuntu-24.04
os: ubuntu-22.04
test-strategy: job
- k8s-version: 'v1.28.15'
test-strategy: deployment
cluster: 'minikube'
helm-version: 'v3.13.3'
docker-version: '26.1.4'
python-version: '3.10'
test-upgrade: true
service-mesh: true
os: ubuntu-24.04
- k8s-version: 'v1.29.13'
test-strategy: job_https
os: ubuntu-22.04
test-strategy: deployment
- k8s-version: 'v1.29.14'
cluster: 'minikube'
helm-version: 'v3.14.3'
docker-version: '27.5.1'
python-version: '3.11'
test-upgrade: true
service-mesh: false
os: ubuntu-24.04
- k8s-version: 'v1.30.9'
test-strategy: job_hostname
os: ubuntu-22.04
test-strategy: job_https
- k8s-version: 'v1.30.10'
cluster: 'minikube'
helm-version: 'v3.15.4'
docker-version: '27.5.1'
python-version: '3.12'
test-upgrade: true
service-mesh: false
os: ubuntu-24.04
- k8s-version: 'v1.31.5'
test-strategy: deployment_https
os: ubuntu-22.04
test-strategy: job_hostname
- k8s-version: 'v1.31.6'
cluster: 'minikube'
helm-version: 'v3.16.4'
docker-version: '28.0.1'
docker-version: '27.4.1'
python-version: '3.13'
test-upgrade: true
service-mesh: false
os: ubuntu-24.04
- k8s-version: 'v1.32.1'
test-strategy: playwright_connect_grid
os: ubuntu-22.04
test-strategy: deployment_https
- k8s-version: 'v1.32.2'
cluster: 'minikube'
helm-version: 'v3.17.0'
docker-version: '28.0.1'
docker-version: '26.1.4'
python-version: '3.10'
test-upgrade: true
service-mesh: true
os: ubuntu-24.04
os: ubuntu-22.04
test-strategy: playwright_connect_grid
env:
CLUSTER: ${{ matrix.cluster }}
KUBERNETES_VERSION: ${{ matrix.k8s-version }}
Expand Down
54 changes: 30 additions & 24 deletions .github/workflows/k8s-scaling-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,47 +56,53 @@ env:
jobs:
build-and-test:
name: Test K8s
runs-on: ubuntu-24.04
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- k8s-version: 'v1.31.5'
- k8s-version: 'v1.27.16'
cluster: 'minikube'
helm-version: 'v3.12.3'
docker-version: '26.1.4'
python-version: '3.9'
os: ubuntu-22.04
test-strategy: test_k8s_autoscaling_job_count_strategy_default_in_chaos
- k8s-version: 'v1.28.15'
cluster: 'minikube'
helm-version: 'v3.16.4'
docker-version: '28.0.1'
python-version: '3.13'
- k8s-version: 'v1.31.5'
helm-version: 'v3.13.3'
docker-version: '26.1.4'
python-version: '3.10'
os: ubuntu-22.04
test-strategy: test_k8s_autoscaling_job_count_strategy_default_with_node_max_sessions
- k8s-version: 'v1.29.14'
cluster: 'minikube'
helm-version: 'v3.16.4'
docker-version: '28.0.1'
python-version: '3.13'
- k8s-version: 'v1.31.5'
helm-version: 'v3.14.3'
docker-version: '27.5.1'
python-version: '3.11'
os: ubuntu-22.04
test-strategy: test_k8s_autoscaling_job_count_strategy_default
- k8s-version: 'v1.30.10'
cluster: 'minikube'
helm-version: 'v3.16.4'
docker-version: '28.0.1'
python-version: '3.13'
- k8s-version: 'v1.31.5'
helm-version: 'v3.15.4'
docker-version: '27.5.1'
python-version: '3.12'
os: ubuntu-22.04
test-strategy: test_k8s_autoscaling_deployment_count_in_chaos
- k8s-version: 'v1.31.6'
cluster: 'minikube'
helm-version: 'v3.16.4'
docker-version: '28.0.1'
docker-version: '27.4.1'
python-version: '3.13'
- k8s-version: 'v1.31.5'
os: ubuntu-22.04
test-strategy: test_k8s_autoscaling_deployment_count_with_node_max_sessions
- k8s-version: 'v1.32.2'
cluster: 'minikube'
helm-version: 'v3.16.4'
docker-version: '28.0.1'
python-version: '3.13'
- k8s-version: 'v1.31.5'
helm-version: 'v3.17.0'
docker-version: '26.1.4'
python-version: '3.10'
os: ubuntu-22.04
test-strategy: test_k8s_autoscaling_deployment_count
cluster: 'minikube'
helm-version: 'v3.16.4'
docker-version: '28.0.1'
python-version: '3.13'
env:
CLUSTER: ${{ matrix.cluster }}
KUBERNETES_VERSION: ${{ matrix.k8s-version }}
Expand Down
11 changes: 9 additions & 2 deletions .github/workflows/release-chrome-versions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ on:
browser-versions:
description: 'List browser version to build. E.g: [130, 131]'
required: true
default: '[97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133]'
default: '[95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134]'
push-image:
description: 'Push image after testing successfully'
required: true
Expand Down Expand Up @@ -123,14 +123,21 @@ jobs:
- name: Build Hub image for testing
if: env.REUSE_BASE == 'false'
run: make hub
- name: Test images with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
- name: Test images Node with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
uses: nick-invision/retry@master
with:
timeout_minutes: 20
max_attempts: 3
retry_wait_seconds: 60
command: |
make test_chrome
- name: Test images Standalone with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
uses: nick-invision/retry@master
with:
timeout_minutes: 20
max_attempts: 3
retry_wait_seconds: 60
command: |
make test_chrome_standalone
- name: Push images with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
if: env.PUSH_IMAGE == 'true'
Expand Down
11 changes: 9 additions & 2 deletions .github/workflows/release-edge-versions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ on:
browser-versions:
description: 'List browser version to build. E.g: [130, 131]'
required: true
default: '[114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133]'
default: '[95, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133]'
push-image:
description: 'Push image after testing successfully'
required: true
Expand Down Expand Up @@ -123,14 +123,21 @@ jobs:
- name: Build Hub image for testing
if: env.REUSE_BASE == 'false'
run: make hub
- name: Test images with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
- name: Test images Node with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
uses: nick-invision/retry@master
with:
timeout_minutes: 20
max_attempts: 3
retry_wait_seconds: 60
command: |
make test_edge
- name: Test images Standalone with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
uses: nick-invision/retry@master
with:
timeout_minutes: 20
max_attempts: 3
retry_wait_seconds: 60
command: |
make test_edge_standalone
- name: Push images with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
if: env.PUSH_IMAGE == 'true'
Expand Down
13 changes: 10 additions & 3 deletions .github/workflows/release-firefox-versions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ on:
browser-versions:
description: 'List browser version to build. E.g: [130, 131]'
required: true
default: '[98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135]'
default: '[98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136]'
push-image:
description: 'Push image after testing successfully'
required: true
Expand Down Expand Up @@ -123,14 +123,21 @@ jobs:
- name: Build Hub image for testing
if: env.REUSE_BASE == 'false'
run: make hub
- name: Test images with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
- name: Test images Node with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
uses: nick-invision/retry@master
with:
timeout_minutes: 20
max_attempts: 3
retry_wait_seconds: 60
command: |
TEST_FIREFOX_INSTALL_LANG_PACKAGE=false FIREFOX_VERSION=${FIREFOX_VERSION} make test_firefox
- name: Test images Standalone with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
uses: nick-invision/retry@master
with:
timeout_minutes: 20
max_attempts: 3
retry_wait_seconds: 60
command: |
FIREFOX_VERSION=${FIREFOX_VERSION} make test_firefox
FIREFOX_VERSION=${FIREFOX_VERSION} make test_firefox_standalone
- name: Push images with Grid core ${{ env.GRID_VERSION }} and ${{ env.BROWSER_NAME }} v${{ env.BROWSER_VERSION }}
if: env.PUSH_IMAGE == 'true'
Expand Down
6 changes: 4 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ CURRENT_PLATFORM := $(shell if [ `arch` = "aarch64" ] || [ `arch` = "arm64" ]; t
PLATFORMS := $(or $(PLATFORMS),$(shell echo $$PLATFORMS),$(CURRENT_PLATFORM))
SEL_PASSWD := $(or $(SEL_PASSWD),$(SEL_PASSWD),secret)
CHROMIUM_VERSION := $(or $(CHROMIUM_VERSION),$(CHROMIUM_VERSION),latest)
FIREFOX_DOWNLOAD_URL := $(or $(FIREFOX_DOWNLOAD_URL),$(FIREFOX_DOWNLOAD_URL),https://download-installer.cdn.mozilla.net/pub/firefox/nightly/2025/01/2025-01-06-09-47-46-mozilla-central/firefox-135.0a1.en-US.linux-aarch64.deb)
FIREFOX_DOWNLOAD_URL := $(or $(FIREFOX_DOWNLOAD_URL),$(FIREFOX_DOWNLOAD_URL),)
SBOM_OUTPUT := $(or $(SBOM_OUTPUT),$(SBOM_OUTPUT),package_versions.txt)
KEDA_TAG_PREV_VERSION := $(or $(KEDA_TAG_PREV_VERSION),$(KEDA_TAG_PREV_VERSION),2.16.1-selenium-grid)
KEDA_CORE_VERSION := $(or $(KEDA_CORE_VERSION),$(KEDA_CORE_VERSION),2.16.1)
Expand Down Expand Up @@ -60,7 +60,9 @@ check_dev_env:

setup_dev_env:
./tests/charts/make/chart_setup_env.sh ; \
make set_containerd_image_store
exit_code=$$? ; \
make set_containerd_image_store ; \
exit $$exit_code ;

set_containerd_image_store:
sudo mkdir -p /etc/docker
Expand Down
8 changes: 5 additions & 3 deletions NodeFirefox/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ ARG FIREFOX_VERSION=latest
ARG FIREFOX_DOWNLOAD_URL=""
ARG FIREFOX_LANG_VERSION=${FIREFOX_VERSION}
RUN apt-get update -qqy && \
if [ "$(dpkg --print-architecture)" = "amd64" ]; then \
FIREFOX_MAJOR_VERSION=${FIREFOX_VERSION%%.*} && \
ARCH=$(if [ "$(dpkg --print-architecture)" = "amd64" ]; then echo "x86_64"; else echo "aarch64"; fi) && \
if [ "$(dpkg --print-architecture)" = "amd64" ] || [ $FIREFOX_VERSION = "latest" ] || [ "${FIREFOX_MAJOR_VERSION}" -ge 136 ]; then \
if [ $FIREFOX_VERSION = "latest" ] || [ $FIREFOX_VERSION = "beta-latest" ] || [ $FIREFOX_VERSION = "nightly-latest" ] || [ $FIREFOX_VERSION = "devedition-latest" ] || [ $FIREFOX_VERSION = "esr-latest" ]; then \
/opt/bin/install-firefox-apt.sh \
&& FIREFOX_VERSION=$(echo "-$FIREFOX_VERSION" | sed 's/-latest//') \
Expand All @@ -31,9 +33,9 @@ RUN apt-get update -qqy && \
ln -fs $(which firefox$FIREFOX_VERSION) /usr/bin/firefox ; \
fi ; \
else \
FIREFOX_DOWNLOAD_URL="https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.deb" \
FIREFOX_DOWNLOAD_URL="https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-$ARCH/en-US/firefox-$FIREFOX_VERSION.deb" \
&& if [ "404" = "$(curl -s -o /dev/null -w "%{http_code}" $FIREFOX_DOWNLOAD_URL)" ]; then \
FIREFOX_DOWNLOAD_URL="https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.bz2" ; \
FIREFOX_DOWNLOAD_URL="https://download-installer.cdn.mozilla.net/pub/firefox/releases/$FIREFOX_VERSION/linux-$ARCH/en-US/firefox-$FIREFOX_VERSION.tar.bz2" ; \
fi ; \
fi \
else \
Expand Down
Empty file modified NodeFirefox/install-firefox-apt.sh
100644 → 100755
Empty file.
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,7 @@ Similarly, Microsoft does not build Edge (`microsoft-edge`) for Linux/ARM platfo
$ docker run --rm -it -p 4444:4444 -p 5900:5900 -p 7900:7900 --shm-size 2g selenium/standalone-chromium:latest
```

- Mozilla Firefox now is available for Linux/ARM64 via [Nightly channel](https://blog.nightly.mozilla.org/2024/04/19/firefox-nightly-now-available-for-linux-on-arm64/).
The Firefox version in ARM64 will be different with the AMD64 until the stable release is available (Noted: we had workaround by pinning the versions getting from [Firefox download installer](https://download-installer.cdn.mozilla.net/pub/firefox/nightly/). The Firefox (node and standalone) images are available in multi-arch.
- Mozilla Firefox now is available for Linux/ARM64 via APT stable channel from v136+. The Firefox (node and standalone) images are available in multi-arch.

Multi-arch images are tested on CircleCI with resource class Linux/ARM64. See the status below.

Expand Down
16 changes: 16 additions & 0 deletions tests/build-backward-compatible/browser-matrix.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
matrix:
browser:
'136':
EDGE_VERSION: null
CHROME_VERSION: null
FIREFOX_VERSION: 136.0
FIREFOX_PLATFORMS: linux/amd64,linux/arm64
'135':
EDGE_VERSION: null
CHROME_VERSION: null
FIREFOX_VERSION: 135.0.1
FIREFOX_DOWNLOAD_URL: https://download-installer.cdn.mozilla.net/pub/firefox/nightly/2025/01/2025-01-06-09-47-46-mozilla-central/firefox-135.0a1.en-US.linux-aarch64.deb
FIREFOX_PLATFORMS: linux/amd64,linux/arm64
'134':
EDGE_VERSION: null
CHROME_VERSION: google-chrome-stable=134.0.6998.35-1
FIREFOX_VERSION: 134.0.2
FIREFOX_DOWNLOAD_URL: https://download-installer.cdn.mozilla.net/pub/firefox/nightly/2024/11/2024-11-25-09-40-45-mozilla-central/firefox-134.0a1.en-US.linux-aarch64.deb
FIREFOX_PLATFORMS: linux/amd64,linux/arm64
Expand Down Expand Up @@ -157,3 +166,10 @@ matrix:
'97':
CHROME_VERSION: google-chrome-stable=97.0.4692.99-1
FIREFOX_VERSION: 97.0.2
'96':
CHROME_VERSION: google-chrome-stable=96.0.4664.110-1
FIREFOX_VERSION: 96.0.3
'95':
CHROME_VERSION: google-chrome-stable=95.0.4638.69-1
EDGE_VERSION: microsoft-edge-stable=95.0.1020.40-1
FIREFOX_VERSION: 95.0.2
Loading

0 comments on commit 2e07b0c

Please sign in to comment.