Skip to content

Commit

Permalink
[ci] Tests run on Linux arm64 hosted runners (#2592)
Browse files Browse the repository at this point in the history
Signed-off-by: Viet Nguyen Duc <[email protected]>
  • Loading branch information
VietND96 authored Jan 20, 2025
1 parent eaa1ee5 commit b190382
Show file tree
Hide file tree
Showing 6 changed files with 166 additions and 45 deletions.
26 changes: 13 additions & 13 deletions .circleci/config.yml → .circleci/config.bak
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,6 @@ version: 2.1
workflows:
build-and-test-multi-arch:
jobs:
- kubernetes-test:
name: "K8s test - Playwright Connect Autoscaling Grid"
platforms: linux/arm64
machine-type: ubuntu2204arm64large
k8s-version: 'v1.25.16'
test-strategy: playwright_connect_grid
cluster: 'minikube'
helm-version: 'v3.11.3'
docker-version: '24.0.9'
test-upgrade: true
- kubernetes-test:
name: "K8s test - Autoscaling disabled"
platforms: linux/arm64
Expand Down Expand Up @@ -47,7 +37,7 @@ workflows:
name: "K8s test - Autoscaling Jobs - HTTPS"
platforms: linux/arm64
machine-type: ubuntu2204arm64large
k8s-version: 'v1.29.12'
k8s-version: 'v1.29.13'
test-strategy: job_https
cluster: 'minikube'
helm-version: 'v3.14.3'
Expand All @@ -57,7 +47,7 @@ workflows:
name: "K8s test - Autoscaling Jobs - Ingress hostname"
platforms: linux/arm64
machine-type: ubuntu2204arm64large
k8s-version: 'v1.30.8'
k8s-version: 'v1.30.9'
test-strategy: job_hostname
cluster: 'minikube'
helm-version: 'v3.15.4'
Expand All @@ -67,12 +57,22 @@ workflows:
name: "K8s test - Autoscaling Deployments - HTTPS"
platforms: linux/arm64
machine-type: ubuntu2204arm64large
k8s-version: 'v1.31.4'
k8s-version: 'v1.31.5'
test-strategy: deployment_https
cluster: 'minikube'
helm-version: 'v3.16.4'
docker-version: '27.4.1'
test-upgrade: true
- kubernetes-test:
name: "K8s test - Playwright Connect Autoscaling Grid"
platforms: linux/arm64
machine-type: ubuntu2204arm64large
k8s-version: 'v1.32.1'
test-strategy: playwright_connect_grid
cluster: 'minikube'
helm-version: 'v3.17.0'
docker-version: '26.1.4'
test-upgrade: true
- docker-test:
name: "Docker test - Use random user (true)"
test-strategy: test
Expand Down
12 changes: 6 additions & 6 deletions .github/actions/get-latest-upstream/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,20 @@ runs:
shell: bash
run: |
sudo apt update
sudo apt install gh
echo "${{ inputs.gh_cli_token }}" | gh auth login --with-token
sudo apt install jq
AUTH_HEADER="Authorization: token ${{ inputs.gh_cli_token }}"
if [ "${{ inputs.release }}" = "true" ]; then
echo "Getting the latest stable release."
RELEASE=$(gh release list -R SeleniumHQ/selenium | grep -v nightly | awk '{ print $4 }' | head -1)
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[] | select(.prerelease == false)] | .[0].tag_name')
else
echo "Getting the latest Nightly release."
RELEASE=$(gh release list -R SeleniumHQ/selenium | grep nightly | awk '{ print $3 }' | head -1)
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[] | select(.prerelease == true)] | .[0].tag_name')
if [ -z "${RELEASE}" ]; then
echo "Nightly release not found, getting the latest stable release."
RELEASE=$(gh release list -R SeleniumHQ/selenium | grep -v nightly | awk '{ print $4 }' | head -1)
RELEASE=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases | jq -r '[.[] | select(.prerelease == false)] | .[0].tag_name')
fi
fi
jar_file=$(gh release view -R SeleniumHQ/selenium ${RELEASE} | grep jar | awk '{ print $2 }' | tail -n 1)
jar_file=$(curl -s -H "$AUTH_HEADER" https://api.github.com/repos/SeleniumHQ/selenium/releases/tags/${RELEASE} | jq -r '.assets[] | select(.name | endswith(".jar")) | .name' | tail -n 1)
echo "Server package: ${jar_file}"
VERSION=$(echo $jar_file | sed 's/selenium-server-//;s/\.jar//')
echo "BASE_RELEASE=${RELEASE} | BASE_VERSION=${VERSION} | VERSION=${VERSION}"
Expand Down
122 changes: 118 additions & 4 deletions .github/workflows/docker-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ permissions:
jobs:
build-and-test:
name: Test Docker Selenium
runs-on: ubuntu-24.04
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
Expand All @@ -38,38 +38,129 @@ jobs:
use-random-user: true
test-video: false
build-all: true
os: ubuntu-24.04
firefox-install-lang-package:
enable-managed-downloads:
- test-strategy: test
use-random-user: false
test-video: false
build-all: true
os: ubuntu-24.04
firefox-install-lang-package:
enable-managed-downloads:
- test-strategy: test_video
use-random-user: false
test-video: true
build-all: false
os: ubuntu-24.04
firefox-install-lang-package:
enable-managed-downloads:
- test-strategy: test_video_dynamic_name
use-random-user: false
test-video: true
build-all: false
os: ubuntu-24.04
firefox-install-lang-package:
enable-managed-downloads:
- test-strategy: test_video_standalone
use-random-user: false
test-video: true
build-all: false
os: ubuntu-24.04
firefox-install-lang-package:
enable-managed-downloads:
- test-strategy: test_node_docker
use-random-user: false
test-video: true
build-all: false
os: ubuntu-24.04
firefox-install-lang-package:
enable-managed-downloads:
- test-strategy: test_standalone_docker
use-random-user: false
test-video: true
build-all: false
os: ubuntu-24.04
firefox-install-lang-package:
enable-managed-downloads:
- test-strategy: test_parallel
use-random-user: false
test-video: false
build-all: false
os: ubuntu-24.04
firefox-install-lang-package:
enable-managed-downloads:
- test-strategy: test_node_relay
use-random-user: false
test-video: false
build-all: false
os: ubuntu-24.04
firefox-install-lang-package:
enable-managed-downloads:
###
- test-strategy: test
use-random-user: true
test-video: false
build-all: true
os: ubuntu-24.04-arm
firefox-install-lang-package: false
enable-managed-downloads: false
- test-strategy: test
use-random-user: false
test-video: false
build-all: true
os: ubuntu-24.04-arm
firefox-install-lang-package: false
enable-managed-downloads: false
- test-strategy: test_video
use-random-user: false
test-video: true
build-all: false
os: ubuntu-24.04-arm
firefox-install-lang-package: true
enable-managed-downloads: true
- test-strategy: test_video_dynamic_name
use-random-user: false
test-video: true
build-all: false
os: ubuntu-24.04-arm
firefox-install-lang-package: true
enable-managed-downloads: true
- test-strategy: test_video_standalone
use-random-user: false
test-video: true
build-all: false
os: ubuntu-24.04-arm
firefox-install-lang-package: true
enable-managed-downloads: true
- test-strategy: test_node_docker
use-random-user: false
test-video: true
build-all: false
os: ubuntu-24.04-arm
firefox-install-lang-package: true
enable-managed-downloads: false
- test-strategy: test_standalone_docker
use-random-user: false
test-video: true
build-all: false
os: ubuntu-24.04-arm
firefox-install-lang-package: true
enable-managed-downloads: true
- test-strategy: test_parallel
use-random-user: false
test-video: false
build-all: false
os: ubuntu-24.04-arm
firefox-install-lang-package: false
enable-managed-downloads: true
- test-strategy: test_node_relay
use-random-user: false
test-video: false
build-all: false
os: ubuntu-24.04-arm
firefox-install-lang-package: true
enable-managed-downloads: true
steps:
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
Expand All @@ -96,7 +187,7 @@ jobs:
python-version: '3.11'
check-latest: true
- name: Enable KVM
if: matrix.test-strategy == 'test_node_relay'
if: matrix.test-strategy == 'test_node_relay' && contains(matrix.os, 'arm') == false
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
Expand Down Expand Up @@ -143,19 +234,42 @@ jobs:
LOG_LEVEL: ${{ github.event.inputs.log-level || 'INFO' }}
TEST_PARALLEL_HARDENING: ${{ github.event.inputs.parallel-hardening || 'true' }}
REQUEST_TIMEOUT: ${{ github.event.inputs.request-timeout || '400' }}
- name: Run Docker Compose to ${{ matrix.test-strategy }}
- name: Set environment variables
run: |
if [ -n "${TEST_FIREFOX_INSTALL_LANG_PACKAGE}" ]; then
echo "TEST_FIREFOX_INSTALL_LANG_PACKAGE=${TEST_FIREFOX_INSTALL_LANG_PACKAGE}" >> $GITHUB_ENV
fi
if [ -n "${SELENIUM_ENABLE_MANAGED_DOWNLOADS}" ]; then
echo "SELENIUM_ENABLE_MANAGED_DOWNLOADS=${SELENIUM_ENABLE_MANAGED_DOWNLOADS}" >> $GITHUB_ENV
fi
env:
TEST_FIREFOX_INSTALL_LANG_PACKAGE: ${{ matrix.firefox-install-lang-package }}
SELENIUM_ENABLE_MANAGED_DOWNLOADS: ${{ matrix.enable-managed-downloads }}
- name: Run Docker Compose to ${{ matrix.test-strategy }} on AMD64
if: contains(matrix.os, 'arm') == false
uses: nick-invision/retry@master
with:
timeout_minutes: 40
max_attempts: 2
retry_wait_seconds: 60
command: |
USE_RANDOM_USER_ID=${{ matrix.use-random-user }} VERSION=${BRANCH} BUILD_DATE=${BUILD_DATE} make ${{ matrix.test-strategy }}
- name: Run Docker Compose to ${{ matrix.test-strategy }} on ARM64
if: contains(matrix.os, 'arm') == true
uses: nick-invision/retry@master
with:
timeout_minutes: 40
max_attempts: 2
retry_wait_seconds: 60
command: |
USE_RANDOM_USER_ID=${{ matrix.use-random-user }} VERSION=${BRANCH} BUILD_DATE=${BUILD_DATE} \
TEST_FIREFOX_INSTALL_LANG_PACKAGE=${TEST_FIREFOX_INSTALL_LANG_PACKAGE} SELENIUM_ENABLE_MANAGED_DOWNLOADS=${SELENIUM_ENABLE_MANAGED_DOWNLOADS} \
make ${{ matrix.test-strategy }}
- name: Upload recorded video
if: matrix.test-video == true
uses: actions/upload-artifact@main
with:
name: "${{ matrix.test-strategy }}_artifacts"
name: "${{ matrix.test-strategy }}_artifacts_${{ matrix.os }}"
path: ./tests/videos/
- name: Clean up Docker
if: always()
Expand Down
33 changes: 20 additions & 13 deletions .github/workflows/helm-chart-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,11 @@ permissions:
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.25.16'
test-strategy: playwright_connect_grid
cluster: 'minikube'
helm-version: 'v3.11.3'
docker-version: '26.1.4'
python-version: '3.8'
test-upgrade: true
service-mesh: true
- k8s-version: 'v1.26.15'
test-strategy: disabled
cluster: 'minikube'
Expand All @@ -55,6 +47,7 @@ jobs:
python-version: '3.8'
test-upgrade: true
service-mesh: false
os: ubuntu-24.04
- k8s-version: 'v1.27.16'
test-strategy: job
cluster: 'minikube'
Expand All @@ -63,6 +56,7 @@ jobs:
python-version: '3.9'
test-upgrade: true
service-mesh: true
os: ubuntu-24.04
- k8s-version: 'v1.28.15'
test-strategy: deployment
cluster: 'minikube'
Expand All @@ -71,30 +65,43 @@ jobs:
python-version: '3.10'
test-upgrade: true
service-mesh: true
- k8s-version: 'v1.29.12'
os: ubuntu-24.04
- k8s-version: 'v1.29.13'
test-strategy: job_https
cluster: 'minikube'
helm-version: 'v3.14.3'
docker-version: '26.1.4'
python-version: '3.11'
test-upgrade: true
service-mesh: false
- k8s-version: 'v1.30.8'
os: ubuntu-24.04
- k8s-version: 'v1.30.9'
test-strategy: job_hostname
cluster: 'minikube'
helm-version: 'v3.15.4'
docker-version: '26.1.4'
python-version: '3.12'
test-upgrade: true
service-mesh: false
- k8s-version: 'v1.31.4'
os: ubuntu-24.04
- k8s-version: 'v1.31.5'
test-strategy: deployment_https
cluster: 'minikube'
helm-version: 'v3.16.4'
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
cluster: 'minikube'
helm-version: 'v3.17.0'
docker-version: '26.1.4'
python-version: '3.10'
test-upgrade: true
service-mesh: true
os: ubuntu-24.04
env:
CLUSTER: ${{ matrix.cluster }}
KUBERNETES_VERSION: ${{ matrix.k8s-version }}
Expand Down Expand Up @@ -199,7 +206,7 @@ jobs:
if: always()
uses: actions/upload-artifact@main
with:
name: "${{ env.ARTIFACT_NAME }}_${{ env.CHART_FILE_NAME }}"
name: "${{ env.ARTIFACT_NAME }}_${{ env.CHART_FILE_NAME }}_${{ matrix.os }}"
path: ${{ env.CHART_PACKAGE_PATH }}
- name: Upload chart test artifacts
if: always()
Expand Down
Loading

0 comments on commit b190382

Please sign in to comment.