ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

docker-selenium Firefox 118 发布记录解读:从镜像标签到 tag_and_push_browser_images.sh 的完整实现

2026/10/7 9:56:12 拓冰建站 浏览量
docker-selenium Firefox 118 发布记录解读:从镜像标签到 tag_and_push_browser_images.sh 的完整实现 测试后端云原生容器编排可观测性【免费下载链接】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点击查看免费下载导读本文以 CHANGELOG/archived/4.31.0/firefox_118.md 这份发布记录为线索深入解析 docker-selenium 项目如何为「Firefox 118.0.2 GeckoDriver 0.36.0 Selenium Grid 4.31.0」这套浏览器镜像组合生成 12 个 Docker 标签。读完本文你将掌握tag_and_push_browser_images.sh的参数约定、标签命名规则、版本探测机制以及如何根据发布记录选择正确的selenium/node-firefox/selenium/standalone-firefox镜像标签用于自动化测试。一、发布记录原文与关键信息提取firefox_118.md记录的是 Selenium Grid 4.31.0 版本构建日期 20250414发布 Firefox 118 镜像时的完整命令与输出./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 - 118.0.2 Short Firefox version - 118.0 GeckoDriver version - 0.36.0 Short GeckoDriver version - 0.36 Tagged selenium/node-firefox:118.0.2-geckodriver-0.36.0-grid-4.31.0-20250414 Tagged selenium/standalone-firefox:118.0.2-geckodriver-0.36.0-grid-4.31.0-20250414 ...从中可以提取出以下核心事实要素值Selenium Grid 版本4.31.0-20250414Firefox 版本118.0.2短版本 118.0GeckoDriver 版本0.36.0短版本 0.36涉及镜像node-firefox、standalone-firefox生成的标签数量每个镜像 6 个共 12 个其中「Short 版本」是指将完整版本号截取为主版本.次版本两位的形式short_version()函数实现用于提供更宽松、更容易记忆的标签别名。这份记录同时说明Firefox 118 的自动化测试镜像需要 GeckoDriver 0.36.0 配套浏览器二进制与驱动二进制被一起打包进镜像。二、命令参数逐项拆解tag_and_push_browser_images.sh发布记录中的命令是调用仓库根目录下的 tag_and_push_browser_images.sh 脚本它一共接收 7 个位置参数位置参数示例值说明1VERSION4.31.0Selenium Grid 版本号2BUILD_DATE20250414构建日期YYYYMMDD3NAMESPACEselenium镜像命名空间仓库地址前缀4PUSH_IMAGEfalse是否在打标签后执行docker push默认false5BROWSERfirefox浏览器类型chrome/chromium/edge/firefox/chrome-for-testing6RELEASE_OLD_VERSIONtrue是否为旧版本补发标签默认false7PLATFORM缺省构建平台默认linux/amd64脚本开头还有两个通过环境变量注入的开关tag_and_push_browser_images.sh第 12-13 行PROMOTE_TAGSfalse若为true表示源镜像已发布在远端仓库、本地并未构建此时改用docker buildx imagetools create在「registry 到 registry」之间打标签第 36-44 行retag()函数以保持多架构 manifest 不丢失PROMOTE_GHCR_NAMESPACE配合上者在同一调用中把标签同步镜像到 GHCR 命名空间。版本探测容器内实时读取版本号针对firefox分支第 195-204 行脚本不是从构建参数硬编码版本而是通过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})firefox --version输出形如Mozilla Firefox 118.0.2取第 3 个字段得到118.0.2geckodriver --version第一行形如geckodriver 0.36.0 (abcdef 20240101)NR1取首行第 2 个字段得到0.36.0。随后short_version()函数第 53-57 行按.分割版本号、只保留前两段得到118.0与0.36。之所以采用「启动容器读版本」而非信任构建变量是为了让标签与镜像内实际二进制的版本严格一致避免构建参数与最终产物不一致导致的标签错位。三、12 个标签的命名规则与语义firefox分支会构造FIREFOX_TAGS数组第 206-218 行每个标签依次组合「浏览器完整版本 / 短版本」「驱动完整版本 / 短版本」「Grid 版本 构建日期」三段信息然后对node-firefox与standalone-firefox两个镜像各打一遍。本次发布中RELEASE_OLD_VERSIONtrue因此只生成 6 类标签每镜像 6 个标签以 node-firefox 为例语义118.0.2-geckodriver-0.36.0-grid-4.31.0-20250414精确固定浏览器、驱动、Grid 版本、构建日期全锁定118.0.2-geckodriver-0.36.0-20250414固定浏览器 驱动 构建日期118.0.2-20250414固定浏览器 构建日期118.0-geckodriver-0.36-grid-4.31.0-20250414短版本版的全锁定标签118.0-geckodriver-0.36-20250414短版本的浏览器 驱动 日期118.0-20250414短版本的浏览器 日期当RELEASE_OLD_VERSIONfalse时即正常发布新版本脚本还会追加 4 个不带-grid与日期的「常驻别名」标签第 219-230 行118.0.2-geckodriver-0.36.0、118.0.2、118.0-geckodriver-0.36、118.0。这些标签会让后续的latest式引用自动跟随该版本。打标签与推送流程retag()函数第 31-51 行统一处理单个标签默认使用docker tag给本地镜像添加别名若PUSH_IMAGEtrue则随后docker push。这也解释了发布记录命令中第 4 个参数为false的含义——本次记录只演示打标签不推送实际 CI 发布时由 Makefile 传入$(PUSH_IMAGE)变量控制。Makefile 中的编排入口Makefile 提供了聚合目标tag_and_push_browser_images: tag_and_push_chrome_images tag_and_push_chrome-for-testing_images tag_and_push_chromium_images tag_and_push_firefox_images tag_and_push_edge_images tag_and_push_firefox_images: ./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)即一次make tag_and_push_firefox_images即可复现本文记录中的完整发布动作。四、源码级佐证node-firefox 镜像如何固化 Firefox 118.0.2 与 GeckoDriver 0.36.0发布记录中的版本号来源于镜像内容而镜像内容由 NodeFirefox/Dockerfile 构建产生Firefox 安装Dockerfile 支持FIREFOX_VERSION、FIREFOX_DOWNLOAD_URL、FIREFOX_LANG_VERSION三个构建参数第 21-23 行。对于 Firefox 118 这类较老版本主版本小于 136第 32 行条件判断会从 Mozilla 官方 CDN 下载对应架构的安装包优先尝试.deb404 时回退到tar.bz2第 42-45 行随后交给 install-firefox-package.sh 完成解压、目录整理/opt/firefox-${FIREFOX_VERSION}与/usr/bin/firefox软链接创建。构建期还会执行apt-get upgrade修复 Firefox 依赖链中的 CVE第 67-70 行。GeckoDriver 安装GECKODRIVER_VERSION构建参数第 75 行同样支持latest默认通过 GitHub Releases 的latest重定向解析出最新版本号再按架构下载geckodriver-${GK_VERSION}-linux64或-linux-aarch64压缩包安装到/opt/geckodriver-${GK_VERSION}并软链为/usr/bin/geckodriver第 76-86 行。浏览器元数据落盘构建最后会向/opt/selenium/browsers/firefox/写入三份文件第 93-96 行namefirefox、version来自firefox --version第 3 字段、binary_location包含moz:firefoxOptions.binary的 JSON 模板支持通过SE_BROWSER_BINARY_LOCATION环境变量覆盖 Firefox 二进制路径。这份元数据正是节点向 Grid 注册自身能力capabilities的依据也是 NodeBase/start-selenium-node.sh 启动selenium-server.jar node进程时加载的浏览器信息。该启动脚本还会通过-Dwebdriver.gecko.driver/usr/bin/geckodriver第 202 行显式声明驱动路径与发布记录中 GeckoDriver 0.36.0 的标签一一对应。五、实战如何依据本文发布记录选择镜像标签对应docs/docker-hub/node-firefox.md中记载的标签约定可以归纳出三层选择策略完全锁定生产/CI 推荐使用带grid与日期的全量标签如selenium/node-firefox:118.0.2-geckodriver-0.36.0-grid-4.31.0-20250414保证浏览器、驱动、Grid、镜像内容四者精确可控按浏览器版本锁定只想固定 Firefox 大版本时用selenium/node-firefox:118.0-20250414此时驱动仍为配套的 0.36.x跟随某次构建selenium/node-firefox:118.0.2-20250414表示该构建日期的 Firefox 118.0.2 镜像。实际运行节点时配合 Hub/EventBus 环境变量即可接入 Griddocker network create grid docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest docker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-firefox:118.0.2-geckodriver-0.36.0-grid-4.31.0-20250414将 WebDriver 测试指向http://localhost:4444即可让 Selenium 客户端以 Firefox 118 作为测试目标。需要注意运行包含浏览器的镜像时应显式设置--shm-size2g以避免共享内存不足导致浏览器崩溃。六、验证与延伸阅读脚本行为验证tests/dockerhub_description/test_resolve_versions.py覆盖了版本解析相关逻辑可用于核对版本号提取规则标签约定详解docs/docker-hub/node-firefox.md 给出了browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD的通用结构及其全部排列组合本记录属于历史归档CHANGELOG/archived/4.31.0/目录还保留了同版本的 chrome_118.md、edge_122.md 等记录格式完全一致可用于对比不同浏览器的版本探测命令差异例如 Edge 使用msedgedriver --version第 4 字段Chrome 使用chromedriver --version第 2 字段。小结一份看似只有 21 行输出日志的firefox_118.md背后串联起了 docker-selenium 的版本探测、多标签编排、镜像构建与 Grid 能力注册的完整链路。理解tag_and_push_browser_images.sh的 61 标签维度浏览器版本 × 驱动版本 × 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 4.48.0 发布 Firefox 135 镜像解读 tag_and_push_browser_images.sh 完整打标签流程docker selenium 4.48.0 发布 Firefox 135 镜像解读 tag_and_push_browser_images.sh 完整打标签测试后端云原生容器编排可观测性docker-selenium Firefox 134 镜像标签全解析Selenium Grid 4.29.0 发布记录与 tag_and_push_browser_images.sh 标签体系实战docker selenium Firefox 134 镜像标签全解析Selenium Grid 4.29.0 发布记录与 tag_and_push_brow测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系实战从 tag_and_push_browser_images.sh 读懂 Chrome 112 镜像的完整发布记录docker selenium 浏览器镜像标签体系实战从 tag_and_push_browser_images.sh 读懂 Chrome 112 镜像的完整测试后端云原生容器编排可观测性上一篇Detect It Easy 快速上手3 分钟摸清任意文件底细下一篇3步把NCM转成MP3ncmdump免费一键解密教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考