docker-selenium 发布管道深度解析:从 firefox_123.md 标签日志读懂 Firefox 123.0.1 + GeckoDriver 0.36.0 镜像的 12 个 Tag

📅 发布时间:2026/10/7 9:48:05
docker-selenium 发布管道深度解析:从 firefox_123.md 标签日志读懂 Firefox 123.0.1 + GeckoDriver 0.36.0 镜像的 12 个 Tag
测试后端云原生容器编排可观测性【免费下载链接】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.31.0/firefox_123.md 这份发布标签日志为核心完整解读 Selenium Grid 4.31.0 版本配套发布的 Firefox 123.0.1 镜像GeckoDriver 0.36.0的 12 个 Docker Tag 及其命名规则、生成算法与底层版本探测机制。读者将掌握如何调用 tag_and_push_browser_images.sh 复现发布流程、如何按浏览器版本 驱动版本 Grid 版本 构建日期四要素精确挑选镜像 Tag以及 docker-selenium 中node-firefox与standalone-firefox镜像从 Dockerfile 构建到多标签发布的完整链路。一、日志文档是什么一次真实发布的标签记录firefox_123.md是一份纯文本执行日志记录的是 2025 年 4 月 14 日构建日期20250414为 Selenium Grid4.31.0版本、Firefox 123.0.1浏览器、GeckoDriver 0.36.0驱动发布 Firefox 镜像时的完整打标签输出./tag_and_push_browser_images.sh 4.31.0 20250414 selenium false firefox true Tagging images for browser firefox, version 4.31.0, build date 20250414, namespace selenium Selenium Grid version - 4.31.0-20250414 Firefox version - 123.0.1 Short Firefox version - 123.0 GeckoDriver version - 0.36.0 Short GeckoDriver version - 0.36 Tagged selenium/node-firefox:123.0.1-geckodriver-0.36.0-grid-4.31.0-20250414 Tagged selenium/standalone-firefox:123.0.1-geckodriver-0.36.0-grid-4.31.0-20250414 ...共 12 行 Tagged 输出这份日志看似只有 20 行实则是 docker-selenium 浏览器镜像发布管道的运行结果快照它同时回答了这条命令带了哪些参数脚本探测到了哪些版本最终生成了哪些 Tag为什么没有生成更短的 Tag四个问题。下面逐层拆解。二、命令参数的七个位置与语义脚本的入口参数定义在 tag_and_push_browser_images.sh 第 39 行完整对应关系如下表位置参数本次调用值默认值作用1VERSION4.31.0必填Selenium Grid 版本号与BUILD_DATE拼成TAG_VERSION4.31.0-202504142BUILD_DATE20250414必填构建日期YYYYMMDD用于生成带日期的 Tag3NAMESPACEseleniumselenium镜像命名空间脚本内会再次用${NAME:-selenium}归一化4PUSH_IMAGEfalsefalse是否在打标签后执行docker pushtrue时经 retag() 推送5BROWSERfirefox必填浏览器类型case分支支持chrome、chromium、edge、firefox、chrome-for-testing6RELEASE_OLD_VERSIONtruefalse是否同时为旧版本打无 Grid、无日期的短 Tag见第四节7PLATFORM未传linux/amd64仅chrome与chrome-for-testing分支使用用于多架构场景下以指定平台运行容器探测版本日志第一行Tagging images for browser firefox, version 4.31.0...对应脚本第 59 行的echoSelenium Grid version - 4.31.0-20250414对应第 196 行。注意第 6 个参数true是本次发布的关键——它决定了 Tag 集合的规模。2.1 NAMESPACE 的真实来源一个容易误读的细节虽然第 3 个位置参数传入了selenium但脚本第 16 行存在NAMESPACE${NAME:-selenium}即最终命名空间以环境变量NAME为准、缺省时回落到selenium。这意味着 CI 中可通过NAME其他命名空间复用同一脚本向不同仓库镜像发布例如 Makefile 中tag_and_push_firefox_images目标直接透传了 Makefile 变量$(NAMESPACE)。三、版本探测脚本如何知道镜像里装了什么日志第 48 行的四个版本号不是手工填写的而是脚本运行时从已构建镜像中动态探测得到的对应 firefox 分支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})即临时启动node-firefox:4.31.0-20250414分别执行firefox --version输出如Mozilla Firefox 123.0.1取第 3 列与geckodriver --version输出首行geckodriver 0.36.0 ...取第 2 列再用 short_version() 函数以.分隔取前两段得到123.0与0.36。这套探测机制之所以成立前提是 NodeFirefox/Dockerfile 在构建阶段已将浏览器与驱动安装进镜像并保证firefox、geckodriver均在 PATH 中GeckoDriver 通过解压 GitHub release 的.tar.gz后ln -fs /opt/geckodriver-$GK_VERSION /usr/bin/geckodriver软链安装见 NodeFirefox/DockerfileFirefox 则依据架构与版本号选择.deb安装或install-firefox-package.sh解包.tar.bz2/.tar.xz安装见 install-firefox-package.sh。此外 Dockerfile 还会把浏览器信息落盘到/opt/selenium/browsers/firefox/{name,version,binary_location}供 Node 注册到 Grid 时上报能力。四、12 个 Tag 的生成算法日志输出的 12 个 Tagnode-firefox与standalone-firefox各 6 个由 FIREFOX_TAGS 数组 生成。由于RELEASE_OLD_VERSIONtrue脚本跳过了第 219230 行追加的 4 个短 Tag最终只发布 6 个。以本次发布为例Tag 矩阵如下#Tag 模式含义本次实际 Tagnode-firefox1完整浏览器-geckodriver-完整驱动-grid-Grid-日期四要素全量锁定123.0.1-geckodriver-0.36.0-grid-4.31.0-202504142完整浏览器-geckodriver-完整驱动-日期浏览器 驱动 日期123.0.1-geckodriver-0.36.0-202504143完整浏览器-日期浏览器 日期123.0.1-202504144短浏览器-geckodriver-短驱动-grid-Grid-日期短版本四要素123.0-geckodriver-0.36-grid-4.31.0-202504145短浏览器-geckodriver-短驱动-日期短浏览器 短驱动 日期123.0-geckodriver-0.36-202504146短浏览器-日期短浏览器 日期123.0-20250414再对每个 Tag 依次调用retag node-firefox ...与retag standalone-firefox ...第 232235 行于是 6 个模式 × 2 个镜像 12 个 Tag。retag()内部在PUSH_IMAGEfalse时仅执行docker tag第 4647 行若为true还会逐个docker push第 4850 行。4.1 为什么没有123.0.1或123.0这样的裸 Tag对比仓库中RELEASE_OLD_VERSIONfalse的发布如 CHANGELOG/4.48.0/firefox_152.md可发现旧版本发布会额外追加完整浏览器-geckodriver-完整驱动如123.0.1-geckodriver-0.36.0完整浏览器如123.0.1短浏览器-geckodriver-短驱动如123.0-geckodriver-0.36短浏览器如123.0本次日志RELEASE_OLD_VERSIONtrue意味这批镜像面向的是当前版本发布场景刻意省略了这些不带 Grid 版本与日期的短 Tag避免与后续重复发布造成 Tag 覆盖歧义——这正是 tag_and_push_browser_images.sh 注释中RELEASE_OLD_VERSION分支存在的意义。五、Tag 命名约定的官方说明docs/docker-hub/node-firefox.md 对上述 Tag 体系给出了面向使用者的抽象概括selenium/node-firefox-Major.Minor.Patch-YYYYMMDD # 纯 Grid 版本 日期 selenium/node-firefox-browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD # 以及上述两种的所有排列组合具体到一次 Firefox 发布可能同时出现的别名 Tag 共有 10 种模式含短版本变体本次日志中的 6 种即其子集。这套多 Tag 策略的价值在于使用者可以按自己关心的粒度选择——想完全锁定环境就选四要素全量 Tag模式 1/4只关心浏览器版本就选浏览器-日期模式 3/6想让 CI 跟随发布节奏就选最长的 Grid 全量 Tag。5.1 使用 Tag 时的两个硬性前提从 docs/docker-hub/node-firefox.md 可以确认两条与浏览器镜像强相关的运行前提必须开启共享内存docker run时加--shm-size2g否则浏览器进程可能因/dev/shm过小而崩溃推荐全量 Tag 锁定版本latest仅用于快速体验生产或回归测试应使用包含浏览器、驱动与 Grid 版本的长 Tag。六、发布链路全景从源码到 12 个 Tag把本次日志放回仓库的完整发布流程中调用链如下证据均在 Makefile构建node-firefoxmake firefox→firefox: node_base firefox_onlyMakefilefirefox_only在NodeFirefox/目录以node-base:4.31.0-20250414为基础执行docker buildx build可传FIREFOX_DOWNLOAD_URL覆盖 Firefox 下载源构建standalone-firefoxmake standalone_firefox→firefox standalone_firefox_onlyMakefile在 Standalone/Dockerfile 中FROM ${NAMESPACE}/${BASE}:${VERSION}以node-firefox为基础仅叠加 Selenium Standalone 启动脚本与配置打标签make tag_and_push_firefox_imagesMakefile执行./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)即本文日志中的命令推送PUSH_IMAGEtrue时逐个docker push另有 tag_and_push_browser_images_ghcr 目标用docker buildx imagetools create将同一批 Tag 镜像同步到 GHCR。值得注意的是脚本第 6 行PUSH_IMAGE${4:-false}与本日志的false一致说明该日志记录的是发布演练或镜像重打标签阶段本地已完成docker tag但未推送远端真正对外发布时会将此参数置为true。七、版本矩阵文档12 个 Tag 之外的导航地图每一份firefox_XXX.md日志文件都由 CHANGELOG/generate-matrix-readme.py 汇总进 CHANGELOG/README.md 的浏览器版本 × Grid 版本矩阵表中。在该矩阵的 Firefox 部分CHANGELOG/README.md4.31.0行列出了 Firefox 98136 共 39 个浏览器版本的日志链接其中firefox_123.md即本文解读的这份。矩阵右上角有官方提醒并非每个 Grid × 浏览器的组合都经过完整测试使用者需结合自身测试需求评估选择——这也解释了为何同一 Firefox 123 会在 4.29.0、4.30.0、4.31.0 等多个 Grid 版本下分别维护独立日志与镜像 Tag。八、延伸阅读与自查清单围绕本文主题仓库内可继续深入的文件tag_and_push_browser_images.sh本文核心脚本另含chrome/chromium/edge/chrome-for-testing四个分支的同构逻辑可横向对比各浏览器的版本探测命令差异如 Edge 取microsoft-edge --version第 3 列、EdgeDriver 取msedgedriver --version第 4 列NodeFirefox/DockerfileFirefox 与 GeckoDriver 的安装层、语言包下载get_lang_package.sh与浏览器信息落盘NodeFirefox/firefox-cleanup.shNode 侧清理滞留firefox-bin进程的守护脚本与镜像 Tag 无关但属于 Node 生命周期管理的一部分docs/docker-hub/node-firefox.mdHub Node 模式下的拉取、运行与 Tag 选择完整说明CHANGELOG/README.md全部 Grid 版本 × 浏览器版本的矩阵导航。快速自查清单需要 Firefox 123 系列镜像时优先选selenium/node-firefox:123.0.1-geckodriver-0.36.0-grid-4.31.0-20250414锁定全部依赖运行务必加--shm-size2g需要无日期短 Tag 的旧版发布请关注RELEASE_OLD_VERSIONfalse的日志形态Node 模式需先docker network create grid并与selenium/hub处于同一网络详见 docs/docker-hub/node-firefox.md。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 117.0.1 GeckoDriver 0.36.0 的 4.29.0 版本发布日志为例docker selenium 镜像标签体系解析以 Firefox 117.0.1 GeckoDriver 0.36.0 的 4.29.0 版本发布日志为测试后端云原生容器编排可观测性Matter NXP 工厂数据生成器NXP Factory Data Generator实战指南从 KLV 架构到产线烧写与安全加固Matter NXP 工厂数据生成器NXP Factory Data Generator实战指南从 KLV 架构到产线烧写与安全加固 本文以 Matter测试后端云原生容器编排可观测性docker-selenium 4.28.1 发布日志解读Firefox 108.0.2 GeckoDriver 0.35.0 镜像标签全解析docker selenium 4.28.1 发布日志解读Firefox 108.0.2 GeckoDriver 0.35.0 镜像标签全解析 导读 本文测试后端云原生容器编排可观测性上一篇ArchivePasswordTestTool免费开源压缩包密码恢复工具终极指南下一篇如何在3分钟内完成Windows和Office的智能激活终极免费解决方案指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考