Selenium Grid 4.34.0 发布 Firefox 135.0.1 + GeckoDriver 0.36.0:浏览器镜像标签命名与发布流程深度解析 测试后端云原生容器编排可观测性【免费下载链接】docker-seleniumProvides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Container Platform, making it easier to perform browser automation at scale项目地址https://gitcode.com/GitHub_Trending/do/docker-selenium点击查看免费下载本篇技术指南以 docker-selenium 仓库中CHANGELOG/archived/4.34.0/firefox_135.md记录的发布日志为核心深度剖析 Selenium Grid 4.34.0 版本中 Firefox 135.0.1GeckoDriver 0.36.0浏览器镜像的完整打标签过程从tag_and_push_browser_images.sh的命令参数、版本探测逻辑到node-firefox/standalone-firefox两类镜像的 20 个标签命名规则再到镜像背后的构建与使用方式。读完本文你将能看懂任何一条浏览器版本 changelog 日志、正确选择与解析所需的镜像标签并理解这套多标签发布机制的设计动机。从一条发布日志说起CHANGELOG/archived/4.34.0/firefox_135.md记录了 2025 年 7 月 27 日构建日期20250727发布 Firefox 135 系列镜像的完整过程原文如下./tag_and_push_browser_images.sh 4.34.0 20250727 selenium false firefox true Tagging images for browser firefox, version 4.34.0, build date 20250727, namespace selenium Selenium Grid version - 4.34.0-20250727 Firefox version - 135.0.1 Short Firefox version - 135.0 GeckoDriver version - 0.36.0 Short GeckoDriver version - 0.36 Tagged selenium/node-firefox:135.0.1-geckodriver-0.36.0-grid-4.34.0-20250727 Tagged selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-grid-4.34.0-20250727 Tagged selenium/node-firefox:135.0.1-geckodriver-0.36.0-20250727 Tagged selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-20250727 Tagged selenium/node-firefox:135.0.1-20250727 Tagged selenium/standalone-firefox:135.0.1-20250727 Tagged selenium/node-firefox:135.0-geckodriver-0.36-grid-4.34.0-20250727 Tagged selenium/standalone-firefox:135.0-geckodriver-0.36-grid-4.34.0-20250727 Tagged selenium/node-firefox:135.0-geckodriver-0.36-20250727 Tagged selenium/standalone-firefox:135.0-geckodriver-0.36-20250727 Tagged selenium/node-firefox:135.0-20250727 Tagged selenium/standalone-firefox:135.0-20250727这条日志揭示了仓库在某个 Grid 版本 某个浏览器版本组合上的发布产物全貌Firefox 135.0.1、GeckoDriver 0.36.0、Selenium Grid 4.34.0三个版本被捆绑打包进node-firefoxGrid 节点和standalone-firefox独立部署两类镜像并通过 6 组标签对外发布。下一节我们从命令本身入手逐项拆解每个参数的语义。命令参数逐项拆解./tag_and_push_browser_images.sh 4.34.0 20250727 selenium false firefox true对照 tag_and_push_browser_images.sh 开头的参数解析第 1-13 行7 个位置参数含义如下参数本日志取值脚本内变量含义$14.34.0VERSIONSelenium Grid 版本号$220250727BUILD_DATE构建/发布日期YYYYMMDD$3seleniumNAMESPACE镜像命名空间即 Docker Hub 上的组织名$4falsePUSH_IMAGE是否在打标签后执行docker push本日志为本地打标签不推送$5firefoxBROWSER浏览器类型脚本内case分支决定标签组生成逻辑$6trueRELEASE_OLD_VERSION是否属于旧版本补发控制是否生成不带 Grid 版本号的简短标签$7未传PLATFORM目标平台默认linux/amd64其中几个关键点的源码依据TAG_VERSION${VERSION}-${BUILD_DATE}第 15 行因此日志第一行输出的 Grid 版本为4.34.0-20250727这也是镜像构建时使用的核心标签NAMESPACE${NAME:-selenium}第 16 行允许通过环境变量NAME覆盖发布目标RELEASE_OLD_VERSIONtrue是关键脚本第 219-230 行中只有当该参数为false时才会追加135.0.1-geckodriver-0.36.0、135.0.1、135.0-geckodriver-0.36、135.0这四个不含 Grid 版本号的短标签。本日志共生成 20 个标签且全部带 Grid 版本号或构建日期正好与RELEASE_OLD_VERSIONtrue的行为吻合——其设计意图是补发旧浏览器版本时避免用旧的浏览器版本号覆盖仓库中更新的135.0.1、135.0之类的浮动标签从而防止用户拉到非预期的旧版本。在 Makefile 中tag_and_push_firefox_images目标第 795-796 行正是以$(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)的形式调用本脚本即本日志命令的正式出处。版本探测标签上的版本号从哪来日志中Firefox version - 135.0.1和GeckoDriver version - 0.36.0并非手动填写而是脚本从已构建镜像内实时探测得到的。firefox 分支第 196-204 行的探测命令如下FIREFOX_VERSION$(docker run --rm ${NAMESPACE}/node-firefox:${TAG_VERSION} firefox --version | awk {print $3}) GECKODRIVER_VERSION$(docker run --rm ${NAMESPACE}/node-firefox:${TAG_VERSION} geckodriver --version | awk NR1{print $2})即临时启动selenium/node-firefox:4.34.0-20250727分别执行firefox --version与geckodriver --version再借助awk提取第三列/第一行第二列作为版本号。这种以运行时探测结果为准的做法保证了标签与实际二进制版本严格一致不依赖任何手写配置。随后通过short_version函数第 53-57 行截取主版本号function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }135.0.1→135.00.36.0→0.36。这就是日志中两行 Short ... version 的由来——短版本号用于生成一组更简短、更便于记忆的标签。最终firefox分支共生成 6 组标签第 206-230 行每组同时作用于node-firefox与standalone-firefox标签组实际标签示例构成要素完整版本 Grid135.0.1-geckodriver-0.36.0-grid-4.34.0-20250727浏览器精确版 驱动精确版 Grid 精确版完整版本 驱动 日期135.0.1-geckodriver-0.36.0-20250727不含 Grid 版本含构建日期完整版本 日期135.0.1-20250727仅浏览器版本 构建日期短版本 Grid135.0-geckodriver-0.36-grid-4.34.0-20250727短浏览器版 短驱动版 Grid 精确版短版本 驱动 日期135.0-geckodriver-0.36-20250727短版本组合 构建日期短版本 日期135.0-20250727短浏览器版本 构建日期每组的实际执行通过retag函数第 31-51 行完成默认路径为docker tag本地镜像并可选docker push当PROMOTE_TAGStrue时CI 发布路径则改用docker buildx imagetools create在 registry 之间直接复制 manifest从而保留多架构特性详见脚本第 18-44 行注释。多标签机制的设计动机这套一镜像、多标签策略服务于版本矩阵的需求。在 CHANGELOG/README.md 中对此有明确说明仓库的动机是提供最新的 Selenium Grid 核心版本同时让用户能够用于跨浏览器测试或因特定浏览器版本的兼容性问题而固定浏览器版本使用方法是找到镜像标签 → 拉取所需镜像 → 开始测试。具体到本日志的 6 组标签它们面向不同的使用场景追求完全可复现浏览器、驱动、Grid 三者全锁选135.0.1-geckodriver-0.36.0-grid-4.34.0-20250727只关心浏览器与驱动版本选135.0.1-geckodriver-0.36.0-20250727只关心浏览器版本、不关心具体哪天构建135.0.1这类浮动标签在RELEASE_OLD_VERSIONfalse的常规发布中提供想跟随某个 Grid 大版本以grid-4.34.0-20250727结尾的标签将 Grid 版本显式锚定。另外README 也诚实声明我们没有做完整的测试来保证 Grid 与浏览器版本的每一种组合都能完全正常运转用户需要基于自身测试需求自行评估决策。这一点同样适用于 135.0.1 与 4.34.0 的组合——标签存在代表构建成功不代表组合被全量验证过。镜像内容Firefox 与 GeckoDriver 是如何被装进容器的理解标签之后再看这些标签背后的镜像内容。NodeFirefox/Dockerfile 基于selenium/node-base构建其 Firefox 安装段第 21-70 行展示了版本策略的演进当目标版本满足amd64 架构或版本号主版本 ≥ 136时走 Mozilla 官方 apt 仓库安装调用 install-firefox-apt.sh该脚本引入packages.mozilla.org源并校验签名指纹35BAA0B33E9EB396F59CA838C0BA5CE6DC6315A3否则从 Mozilla 官方 CDN 下载.deb或.tar.bz2安装包由 install-firefox-package.sh 完成解压与/usr/bin/firefox符号链接。因此 135.0.1 属于 136的下载安装路径——这也解释了为什么日志发布时需要明确标注精确版本。GeckoDriver 安装段第 75-86 行则始终从 mozilla/geckodriver 的 GitHub Releases 下载对应架构的压缩包先解析releases/latest重定向得到最新版本再按amd64→linux64、aarch64→linux-aarch64选择驱动归档最终软链到/usr/bin/geckodriver与日志中的 0.36.0 对应。此外Dockerfile 第 93-96 行还会向/opt/selenium/browsers/firefox/写入浏览器元数据firefox # name 135.0.1 # version运行时探测 {moz:firefoxOptions: {binary: ${SE_BROWSER_BINARY_LOCATION:-/usr/bin/firefox}}}其中moz:firefoxOptions.binary供 Selenium Grid 创建会话时定位浏览器可执行文件可通过SE_BROWSER_BINARY_LOCATION环境变量覆盖。节点还默认开启SE_NODE_ENABLE_MANAGED_DOWNLOADStrue第 98-99 行支持由 Selenium Manager 管理浏览器下载行为。另外 firefox-cleanup.sh 提供僵尸进程清理守护进程通过SE_BROWSER_LEFTOVERS_PROCESSES_SECS默认阈值与SE_BROWSER_LEFTOVERS_INTERVAL_SECS轮询间隔控制避免长时间运行的节点被残留的firefox-bin进程拖垮。实际使用如何拉起 Firefox 135 镜像方式一Selenium Grid 节点Node 模式在分布式 Grid 中node-firefox镜像作为注册到 Hub 的节点运行。仓库根目录的 docker-compose-v3.yml 展示了典型用法当前示例为image: selenium/node-firefox:4.48.0-20260905将该值替换为本日志发布的标签即可锁定 Firefox 135.0.1 GeckoDriver 0.36.0services: node-firefox: image: selenium/node-firefox:135.0.1-geckodriver-0.36.0-grid-4.34.0-20250727 shm_size: 2gb depends_on: - selenium-hub environment: - SE_EVENT_BUS_PUBLISH_PORT4442 - SE_EVENT_BUS_SUBSCRIBE_PORT4443 volumes: - /dev/shm:/dev/shm节点启动后客户端通过 Grid 端点Hub 的 4444 端口提交browserName: firefox的会话请求Distributor 会将该请求路由到本节点并由节点依据/opt/selenium/browsers/firefox/binary_location中的配置启动 Firefox 135.0.1。方式二独立部署Standalone 模式standalone-firefox把 Selenium Server 与 Firefox 打包进同一容器适合本地快速验证或 CI 单机执行docker run -d -p 4444:4444 --shm-size2g \ selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-grid-4.34.0-20250727然后通过 WebDriver 客户端Java/Python/JS 等连接http://localhost:4444请求browserName: firefox即会得到 135.0.1 实例若需要多语言界面get_lang_package.sh会将对应版本的语言包装入distribution/extensions目录该目录的创建见 install-firefox-package.sh 第 22 行。方式三固定版本版本矩阵的初衷如 CHANGELOG/README.md 所述本矩阵存在的核心价值就是固定浏览器版本。当 Firefox 136 或后续版本在你的业务场景中表现不佳时可以直接引用本文档发布的135.0.1系标签把测试环境锁定在这一版本组合上直到兼容性问题解决。如何验证镜像内容拉取镜像后可用容器内命令复核版本号是否与标签一致这与发布脚本的探测逻辑firefox --version、geckodriver --version完全对应docker run --rm selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-grid-4.34.0-20250727 \ firefox --version docker run --rm selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-grid-4.34.0-20250727 \ geckodriver --version docker run --rm selenium/standalone-firefox:135.0.1-geckodriver-0.36.0-grid-4.34.0-20250727 \ /opt/selenium/selenium-server.jar info --versionMakefile 中的firefox_upgrade_version目标第 765-770 行正是这样一组构建 → 打标签 → 复核三版本的自动化流程可作为升级 Firefox 版本时的手工/自动化参考模板。阅读 changelog 的正确姿势最后把这条日志放回更大的上下文CHANGELOG/archived/目录按 Grid 版本归档了历史上所有浏览器版本的发布记录当前最新版本矩阵见 CHANGELOG/README.md 的 Latest Grid Version 表Firefox 列表从 98 一直延伸到 155。每一格✓都链接到对应firefox_版本.md的发布日志。阅读任何一条此类日志时可按三步快速定位看命令参数确认 Grid 版本4.34.0、构建日期20250727与是否RELEASE_OLD_VERSION决定是否有浮动短标签看版本探测结果确认浏览器135.0.1与驱动0.36.0的精确版本以及短版本135.0/0.36看 Tagged 列表选择适合自己场景的标签——三者全锁用grid-组浏览器优先用-build_date组跟随浮动版本则用无日期组仅在常规发布中存在。相关文件索引发布脚本tag_and_push_browser_images.sh镜像构建NodeFirefox/Dockerfile、NodeFirefox/install-firefox-apt.sh、NodeFirefox/install-firefox-package.sh、NodeFirefox/get_lang_package.sh运维脚本NodeFirefox/firefox-cleanup.sh版本矩阵总览CHANGELOG/README.md构建与发布入口Makefile使用示例docker-compose-v3.yml赞分享测试后端云原生容器编排可观测性【免费下载链接】docker-seleniumProvides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Container Platform, making it easier to perform browser automation at scale项目地址https://gitcode.com/GitHub_Trending/do/docker-selenium点击查看免费下载相关推荐docker-selenium 发布解析Firefox 108.0.2 GeckoDriver 0.36.0 Selenium Grid 4.34.0 镜像标签生成全流程docker selenium 发布解析Firefox 108.0.2 GeckoDriver 0.36.0 Selenium Grid 4.34.0测试后端云原生容器编排可观测性Selenium Grid 4.34.0 发布记录解读Firefox 130.0.1 GeckoDriver 0.36.0 镜像标签体系与打标签流程Selenium Grid 4.34.0 发布记录解读Firefox 130.0.1 GeckoDriver 0.36.0 镜像标签体系与打标签流程 本文测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签发布机制解析以 Firefox 101.0.1 GeckoDriver 0.36.0 Grid 4.32.0 为例docker selenium 浏览器镜像标签发布机制解析以 Firefox 101.0.1 GeckoDriver 0.36.0 Grid 4.32测试后端云原生容器编排可观测性上一篇Raon-OpenTTS-1B初体验KRAFTON开源1B零样本语音克隆TTS性能比肩闭源SOTA下一篇Calibre插件生态高效使用秘籍从首次安装到自定义开发的四级进阶路线创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考