资讯动态

docker-selenium 4.29.0 Firefox 125 版本发布全解析:镜像标签生成机制与 GeckoDriver 版本对齐实战

发布时间:2026/10/6 2:04:45 来源:尧图企业网站定制
测试后端云原生容器编排可观测性【免费下载链接】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.29.0/firefox_125.md完整还原 Selenium Grid 4.29.0-20250303 版本中 Firefox 125.0.3 GeckoDriver 0.36.0 镜像的标签生成过程。文章不仅逐条解读发布产物更深入剖析背后的核心脚本 tag_and_push_browser_images.sh 的参数语义、版本探测原理与标签命名规范并结合 NodeFirefox/Dockerfile 的构建逻辑与 docs/docker-hub/node-firefox.md 的选标签指南帮助读者掌握发布记录如何读、标签体系如何用、镜像如何选的完整链路。发布记录逐行解读4.29.0 的 Firefox 125 产物清单归档文档 firefox_125.md 的核心是一段tag_and_push_browser_images.sh的执行日志。完整命令与输出如下./tag_and_push_browser_images.sh 4.29.0 20250303 selenium false firefox true Tagging images for browser firefox, version 4.29.0, build date 20250303, namespace selenium Selenium Grid version - 4.29.0-20250303 Firefox version - 125.0.3 Short Firefox version - 125.0 GeckoDriver version - 0.36.0 Short GeckoDriver version - 0.36 Tagged selenium/node-firefox:125.0.3-geckodriver-0.36.0-grid-4.29.0-20250303 Tagged selenium/standalone-firefox:125.0.3-geckodriver-0.36.0-grid-4.29.0-20250303 Tagged selenium/node-firefox:125.0.3-geckodriver-0.36.0-20250303 Tagged selenium/standalone-firefox:125.0.3-geckodriver-0.36.0-20250303 Tagged selenium/node-firefox:125.0.3-20250303 Tagged selenium/standalone-firefox:125.0.3-20250303 Tagged selenium/node-firefox:125.0-geckodriver-0.36-grid-4.29.0-20250303 Tagged selenium/standalone-firefox:125.0-geckodriver-0.36-grid-4.29.0-20250303 Tagged selenium/node-firefox:125.0-geckodriver-0.36-20250303 Tagged selenium/standalone-firefox:125.0-geckodriver-0.36-20250303 Tagged selenium/node-firefox:125.0-20250303 Tagged selenium/standalone-firefox:125.0-20250303这段日志包含三层关键信息信息类别具体取值含义Selenium Grid 版本4.29.0-20250303Grid 主版本号 构建日期TAG_VERSION的拼装结果Firefox 版本125.0.3短版本125.0镜像内实际安装的 Firefox 完整版本GeckoDriver 版本0.36.0短版本0.36Firefox 对应的 WebDriver 驱动版本同一份FIREFOX_TAGS列表被依次应用到node-firefox与standalone-firefox两类镜像上最终产生 6 × 2 12 个标签。核心脚本剖析tag_and_push_browser_images.sh 的参数与流程发布记录里的命令本质上是对 tag_and_push_browser_images.sh 的一次调用。该脚本通过位置参数控制整个发布行为VERSION$1 # Selenium Grid 版本号如 4.29.0 BUILD_DATE$2 # 构建日期如 20250303 NAMESPACE$3 # 镜像命名空间如 selenium PUSH_IMAGE${4:-false} # 是否推送镜像到 Registry默认 false BROWSER$5 # 浏览器类型chrome / chromium / edge / firefox / chrome-for-testing RELEASE_OLD_VERSION${6:-false} # 是否为旧版本补发默认 false PLATFORM${7:-linux/amd64} # 探测版本时运行的平台默认 linux/amd64脚本开头会拼装完整版本标识并定义retag()与short_version()两个函数TAG_VERSION${VERSION}-${BUILD_DATE}即日志中的4.29.0-20250303short_version()通过字符串分割取前两段把125.0.3压缩为125.0、0.36.0压缩为0.36用于生成短版本标签retag()执行docker tag当PUSH_IMAGE为true时追加docker push实现打标签并推送一步到位。firefox 分支的版本探测逻辑脚本在 firefox 分支中并非硬编码版本号而是通过docker run启动刚构建好的镜像从容器内二进制文件动态提取版本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.29.0-20250303分别执行firefox --version与geckodriver --version再用awk抽取版本号字段。这正是日志中Firefox version - 125.0.3、GeckoDriver version - 0.36.0两行的真实来源——版本信息来自镜像运行时而非脚本预设从机制上避免了版本号与实际安装产物不一致的问题。六个基础标签的拼装规则FIREFOX_TAGS数组定义了六种标签组合源码见 tag_and_push_browser_images.sh序号标签模板本次产物示例语义1{Firefox}-geckodriver-{GK}-grid-{Grid}-{Date}125.0.3-geckodriver-0.36.0-grid-4.29.0-20250303全版本精确锁定最完整2{Firefox}-geckodriver-{GK}-{Date}125.0.3-geckodriver-0.36.0-20250303浏览器 驱动 构建日期3{Firefox}-{Date}125.0.3-20250303浏览器 构建日期4{ShortFirefox}-geckodriver-{ShortGK}-grid-{Grid}-{Date}125.0-geckodriver-0.36-grid-4.29.0-20250303短版本的全信息组合5{ShortFirefox}-geckodriver-{ShortGK}-{Date}125.0-geckodriver-0.36-20250303短版本 驱动 日期6{ShortFirefox}-{Date}125.0-20250303短版本 日期RELEASE_OLD_VERSIONtrue为什么这次没有浮动标签细心的读者会发现本次 12 个标签全部带20250303构建日期没有任何一个浮动标签如125.0.3-geckodriver-0.36.0或125.0。这与命令的第 6 个参数true直接相关。脚本中当RELEASE_OLD_VERSION为false时还会追加 4 个不带日期的浮动标签见 tag_and_push_browser_images.sh${FIREFOX_VERSION}-geckodriver-${GECKODRIVER_VERSION} # 如 125.0.3-geckodriver-0.36.0 ${FIREFOX_VERSION} # 如 125.0.3 ${FIREFOX_SHORT_VERSION}-geckodriver-${GECKODRIVER_SHORT_VERSION} # 如 125.0-geckodriver-0.36 ${FIREFOX_SHORT_VERSION} # 如 125.0而本次第 6 个参数传的是true表示这是一次旧版本Firefox 125.0.3的归档补发。归档场景下若继续更新浮动标签会覆盖当前最新版本对应的latest语义标签导致浮动标签指向旧浏览器的混乱。因此归档记录只保留带日期的确定性标签这正是该参数存在的意义。归档发布与当前发布的差异对照同一份 Firefox 125.0.3 发布记录在仓库中出现了两次归档版 与 当前版。对比可见维度归档版4.29.0当前版4.48.0Selenium Grid 版本4.29.0-202503034.48.0-20260909Firefox 版本125.0.3125.0.3GeckoDriver 版本0.36.00.37.1调用命令tag_and_push_browser_images.sh 4.29.0 20250303 selenium false firefox truetag_and_push_browser_images.sh 4.48.0 20260909 selenium false firefox true这说明 Firefox 125.0.3 镜像会被多次重发浏览器二进制保持不变但配套的 Selenium Grid Server 与 GeckoDriver 会随新版本迭代升级。选镜像时应优先看grid-段与geckodriver-段确认测试环境所依赖的驱动能力。标签背后NodeFirefox 镜像的构建逻辑标签体系能成立前提是镜像内容真实可控。NodeFirefox/Dockerfile 定义了 Firefox 镜像的构建细节Firefox 安装通过FIREFOX_VERSION构建参数控制默认latest对 125 这类旧版本会走install-firefox-package.sh从 Mozilla 官方 release 目录下载.deb或.tar.bz2包安装见 install-firefox-package.shamd64/aarch64架构分别对应x86_64/aarch64下载源语言包构建时调用 get_lang_package.sh 按FIREFOX_LANG_VERSION下载对应版本的.xpi语言包到 Firefox 的distribution/extensions目录GeckoDriver 安装GECKODRIVER_VERSION构建参数默认latest通过wget从 Mozilla geckodriver release 下载对应linux64/linux-aarch64压缩包解压到/opt/geckodriver-$GK_VERSION并软链到/usr/bin/geckodriver浏览器元信息落盘构建期把firefox、版本号与{moz:firefoxOptions: {...}}写入/opt/selenium/browsers/firefox/目录供 Selenium Grid Node 启动时读取并自动生成 config。运行链路方面NodeBase/start-selenium-node.sh 在启动 Node 时会显式注入-Dwebdriver.gecko.driver/usr/bin/geckodriver确保 Grid Node 找到与 Firefox 版本对齐的驱动。这也解释了为什么标签中Firefox 版本 GeckoDriver 版本必须成对出现——二者是运行时强绑定关系。发布编排Makefile 中的全链路仓库的 Makefile 是脚本的上游调度器负责把构建与打标签串成完整发布流程版本变量集中定义VERSION、BUILD_DATE默认取当天日期$(shell date %Y%m%d)、TAG_VERSION : $(VERSION)-$(BUILD_DATE)见 Makefile聚合目标tag_and_push_browser_images依次调用 chrome、chrome-for-testing、chromium、edge、firefox 五个浏览器分支见 Makefile其中 firefox 分支执行./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)PUSH_IMAGE与RELEASE_OLD_VERSION均默认为false正式发版时由发布流水线如 deploy.yml显式传参归档补发时则把RELEASE_OLD_VERSION置为true——与归档文档中的命令参数完全对应。实战如何基于标签运行 Firefox 节点理解了标签生成机制后实际使用只需按发布记录挑选标签。node-firefox.md 给出了标准接入流程适用于任何 node-firefox 标签创建 Docker 网络docker network create grid启动 Hubdocker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest启动 Firefox Node按发布记录锁定精确标签docker run -d --net grid \ -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-firefox:125.0.3-geckodriver-0.36.0-grid-4.29.0-20250303将 WebDriver 测试指向http://localhost:4444即可。选标签建议日常调试可优先使用短版本标签125.0-20250303需要复现线上精确环境时使用125.0.3-geckodriver-0.36.0-grid-4.29.0-20250303这类全信息标签一次锁定浏览器、驱动、Grid 与构建日期四个维度。官方文档明确建议避免裸用latest以消除浮动标签带来的环境漂移参见 docs/docker-hub/node-firefox.md。另外注意Node 模式下通过-e SE_EVENT_BUS_HOSTselenium-hub让 Node 主动注册到 Hub本地测试还需加--shm-size2g使用宿主机共享内存避免浏览器渲染 OOM。小结一份看似只有脚本输出的归档发布记录背后串联了 docker-selenium 的完整发布工程Makefile编排构建版本 →tag_and_push_browser_images.sh动态探测镜像内浏览器/驱动版本 → 按 6 类模板加可选浮动标签批量打标签并推送 → Node 启动脚本按-Dwebdriver.gecko.driver绑定驱动路径。归档版RELEASE_OLD_VERSIONtrue的用法提醒我们补发旧浏览器时只发布带日期的确定性标签既保留历史版本的可追溯性又不污染latest语义。下次在 CI 或测试环境中挑选 node-firefox 镜像时对照 CHANGELOG 目录下对应版本的发布记录即可快速确定浏览器、驱动、Grid 三者精确对齐的镜像标签。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 发布 Chrome 133 镜像标签生成机制与版本对齐实践docker selenium 发布 Chrome 133 镜像标签生成机制与版本对齐实践 导读 本文以 docker selenium 仓库中 CHANGE测试后端云原生容器编排可观测性docker-selenium 4.48.0 Firefox 108 发布解析镜像 Tag 命名体系与 GeckoDriver 版本对齐docker selenium 4.48.0 Firefox 108 发布解析镜像 Tag 命名体系与 GeckoDriver 版本对齐 本文基于 docke测试后端云原生容器编排可观测性docker-selenium Firefox 144 发布记录node-firefox / standalone-firefox 镜像标签体系与 GeckoDriver 0.37.1 版本解析实战docker selenium Firefox 144 发布记录node firefox / standalone firefox 镜像标签体系与 Gecko测试后端云原生容器编排可观测性上一篇8080模拟器按键输入怎么接Cocoa键盘事件处理完整教程下一篇poi-tl部署与运维生产环境中的最佳实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑