Skip to content

[build] Keep Chrome dev/beta images on linux/amd64 only, resolve the latest rclone tag - #3188

Open
VietND96 wants to merge 3 commits into
trunkfrom
chrome-dev-beta-amd64-only
Open

[build] Keep Chrome dev/beta images on linux/amd64 only, resolve the latest rclone tag#3188
VietND96 wants to merge 3 commits into
trunkfrom
chrome-dev-beta-amd64-only

Conversation

@VietND96

@VietND96 VietND96 commented Aug 1, 2026

Copy link
Copy Markdown
Member

Thanks for contributing to the Docker-Selenium project!
A PR well described will help maintainers to quickly review and merge it

Description

Two build fixes after #3187.

Chrome dev/beta images back to linux/amd64 only

  • .github/workflows/update-dev-beta-browser-images.yml: Chrome dev/beta build for linux/amd64 again, with a comment explaining why. Firefox dev/beta stay multi-arch and the stable Chrome images stay multi-arch.
  • README.md: note that the Chrome dev/beta images are AMD64 only.

Video image resolves the rclone version itself

  • .ffmpeg/Dockerfile: RCLONE_VER defaults to latest and is resolved from the rclone GitHub releases, which are sorted by publish date, so the most recently tagged release is used. git ls-remote --sort=-creatordate can not do this, sorting remote refs by date needs object data that is not available without a repository, so a version sorted tag list is kept as a fallback for when the API returns nothing, for instance when it is rate limited. An explicit RCLONE_VER is still used as is.

Motivation and Context

Chrome dev/beta

Google publishes no ChromeDriver for Linux/ARM64, so the ARM64 Chrome images use the Debian chromium-driver package of the same major version instead. Those packages follow the stable channel and currently top out at 151, while Chrome beta is 152 and dev is 153, so no matching driver major exists for those channels and the build fails:

Detected architecture: arm64
Detected Chrome major version: 152
Google does not build ChromeDriver for linux/arm64, getting the Chromium driver version from https://raw.githubusercontent.com/NDViet/chromium-stable/refs/heads/main/browser-matrix.yml
Chromium driver package for major version 152 is not available yet, it can not be installed on linux/arm64
ERROR: process "/bin/sh -c chmod +x /opt/bin/install-chromedriver.sh && /opt/bin/install-chromedriver.sh" did not complete successfully: exit code: 1

This is structural rather than a temporary lag: a Chromium driver for a given major only lands once that major reaches stable, which is exactly when the version stops being dev/beta.

rclone

RCLONE_VER pointed at v1.75-stable, a maintenance branch rclone has not cut yet, so the clone failed and the video image could not build:

warning: Could not find remote branch v1.75-stable to clone.
fatal: Remote branch v1.75-stable not found in upstream origin

Resolving the version at build time also keeps the video image on the current rclone release without a manual bump. Verified in a container: the latest release resolves to v1.75.0, the shallow clone succeeds and make builds rclone v1.75.0.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist

  • I have read the contributing document.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

Chrome dev (153) and beta (152) are ahead of the Chromium driver packages,
which follow the stable channel and currently top out at 151, so no
matching driver major exists for those channels on arm64 and the build
fails at install-chromedriver.sh.

Stable Chrome images stay multi-arch, Firefox dev/beta are unaffected.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@qodo-code-review

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Restrict Chrome dev/beta Docker images to linux/amd64 in CI

🐞 Bug fix 📝 Documentation ⚙️ Configuration changes 🕐 10-20 Minutes

Grey Divider

AI Description

• Limit Chrome dev/beta image builds to linux/amd64 to avoid ARM64 driver mismatch failures.
• Keep Firefox dev/beta and Chrome stable images multi-arch.
• Document Chrome dev/beta AMD64-only availability due to ARM64 ChromeDriver limitations.
Diagram

graph TD
  A["GitHub Actions: update dev/beta"] --> B["Build matrix"] --> C["Chrome dev/beta images"] --> D["linux/amd64 only"]
  B --> E["Firefox dev/beta images"] --> F["linux/amd64 + arm64"]
  G["README note"] --> H["Users/maintainers"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Build/ship an ARM64 ChromeDriver for dev/beta
  • ➕ Restores multi-arch dev/beta Chrome images
  • ➕ Keeps dev/beta behavior aligned across architectures
  • ➖ High maintenance burden (tracking releases, signing, CVEs)
  • ➖ Potential licensing/compliance concerns distributing custom driver binaries
  • ➖ Adds substantial CI complexity and risk
2. Skip driver installation for ARM64 dev/beta (driverless mode)
  • ➕ Could allow publishing ARM64 images without blocking on a matching driver
  • ➕ Keeps image availability broad
  • ➖ Breaks expectations for users relying on bundled driver
  • ➖ May require larger behavioral/documentation changes and support burden
  • ➖ Not universally compatible depending on Selenium usage patterns
3. Pin ARM64 dev/beta to last stable-major with available Debian driver
  • ➕ Maintains ARM64 buildability without removing dev/beta tags entirely
  • ➖ Dev/beta tags would no longer reflect actual dev/beta versions
  • ➖ Creates confusing semantics and potential user surprise

Recommendation: Keeping Chrome dev/beta builds on linux/amd64 only is the most pragmatic, lowest-risk fix given the structural mismatch: Debian-provided Chromium driver majors only appear once a major reaches stable, so ARM64 cannot reliably track Chrome dev/beta. The chosen approach also preserves the multi-arch promise for stable Chrome and for Firefox dev/beta, limiting the change to the affected channels.

Files changed (2) +5 / -3

Documentation (1) +1 / -1
README.mdDocument Chrome dev/beta AMD64-only availability +1/-1

Document Chrome dev/beta AMD64-only availability

• Extends the ChromeDriver-on-ARM64 note to explain that Debian chromium-driver packages track stable, making Chrome dev/beta images AMD64-only. This aligns documented platform support with the CI build matrix.

README.md

Other (1) +4 / -2
update-dev-beta-browser-images.ymlRestrict Chrome dev/beta CI builds to linux/amd64 +4/-2

Restrict Chrome dev/beta CI builds to linux/amd64

• Updates the workflow matrix so Chrome dev and beta images build only for linux/amd64. Adds an inline comment explaining the ARM64 ChromeDriver/Chromium-driver major-version mismatch that breaks dev/beta builds.

.github/workflows/update-dev-beta-browser-images.yml

@qodo-code-review

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

To customize comments, go to the Qodo configuration screen, or learn more in the docs.

Qodo Logo

VietND96 and others added 2 commits August 1, 2026 15:43
RCLONE_VER pointed at v1.75-stable, a maintenance branch rclone has not
cut yet, so `git clone -b` failed and the video image could not build.

Default RCLONE_VER to "latest" and resolve it from the repository tags,
following the same pattern as GO_VERSION. Only vX.Y.Z tags are considered
so release candidates and one-off tags are ignored, and an explicit
RCLONE_VER is still used as is.

Verified in a container: the latest tag resolves to v1.75.0, the shallow
clone succeeds and `make` builds rclone v1.75.0.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
GitHub releases are sorted by publish date, so the API gives the most
recently tagged release, e.g. a v1.74.5 point release published after
v1.75.0 wins over a plain version sort.

`git ls-remote --sort=-creatordate` can not do this, sorting remote refs
by date needs object data that is not available without a repository, so
the version sorted tag list stays as a fallback when the API returns
nothing, for instance when it is rate limited.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@VietND96 VietND96 changed the title [ci] Keep Chrome dev/beta images on linux/amd64 only [build] Keep Chrome dev/beta images on linux/amd64 only, resolve the latest rclone tag Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant