ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

docker-selenium 版本标签机制解析:以 Selenium Grid 4.31.0 的 Firefox 129 镜像发布记录为例

docker-selenium 版本标签机制解析:以 Selenium Grid 4.31.0 的 Firefox 129 镜像发布记录为例 测试后端云原生容器编排可观测性【免费下载链接】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_129.md 这份发布记录为切入点逐行解读 Selenium Grid 4.31.0 构建日期 20250414 的 Firefox 129.0.2 镜像打标签过程并结合 tag_and_push_browser_images.sh、NodeFirefox/Dockerfile 与 Makefile 源码讲清 docker-selenium 的镜像版本命名约定、标签生成逻辑与使用方式。读完本文你将能读懂任意一份CHANGELOG版本记录并能准确选择或校验selenium/node-firefox与selenium/standalone-firefox镜像的完整标签。这份发布记录是什么firefox_129.md位于CHANGELOG/archived/4.31.0/归档目录下内容是一段完整命令输出。它记录了发布流程中执行浏览器镜像打标签脚本后的真实日志核心命令为./tag_and_push_browser_images.sh 4.31.0 20250414 selenium false firefox true脚本位于仓库根目录参数依次为参数本次取值含义VERSION4.31.0Selenium Grid 版本号BUILD_DATE20250414构建日期YYYYMMDDNAMESPACEselenium镜像命名空间默认seleniumPUSH_IMAGEfalse是否在打标签后执行docker pushBROWSERfirefox目标浏览器脚本按此进入对应分支RELEASE_OLD_VERSIONtrue是否为旧版本补发影响是否生成省略 Grid 版本号的标签其中PUSH_IMAGEfalse说明本次只是构建并打标签本地镜像仓库并未直接推送而RELEASE_OLD_VERSIONtrue表明这是一次面向历史版本的补发操作——从脚本逻辑看当该参数为true时会跳过生成省略构建日期和 Grid 版本号的短标签避免覆盖已发布的旧标签。这与当前仓库默认值RELEASE_OLD_VERSIONfalse见 Makefile 第 16 行相反正是因为firefox_129.md属于归档的旧版本补发记录。版本快照发布记录中透露的组件版本日志第二段是打标签前的版本探测输出给出了 4.31.0-20250414 这一版本组合中各组件的精确版本Selenium Grid version - 4.31.0-20250414 Firefox version - 129.0.2 Short Firefox version - 129.0 GeckoDriver version - 0.36.0 Short GeckoDriver version - 0.36这些值并非人工填写而是由脚本在容器内执行版本命令后解析得出。对应 tag_and_push_browser_images.sh 中 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})其中TAG_VERSION即${VERSION}-${BUILD_DATE}也就是4.31.0-20250414。脚本先以该标签运行node-firefox容器分别执行firefox --version与geckodriver --version再用awk提取版本字段随后通过short_version()函数tag_and_push_browser_images.sh将129.0.2截断为前两段129.0、将0.36.0截断为0.36得到短版本号。这种从镜像内部实测版本而非硬编码版本的做法保证了标签永远与实际打包的二进制一致。同样的版本探测逻辑也出现在 generate_release_notes.sh用于自动生成发布说明中的组件版本表。标签生成规则一次发布产出 12 个标签发布记录共输出 12 个打标签日志行对应 6 组标签模式 × 2 种镜像node-firefox与standalone-firefox。其生成逻辑位于 tag_and_push_browser_images.sh 的FIREFOX_TAGS数组${FIREFOX_VERSION}-geckodriver-${GECKODRIVER_VERSION}-grid-${TAG_VERSION}完整组合标签${FIREFOX_VERSION}-geckodriver-${GECKODRIVER_VERSION}-${BUILD_DATE}浏览器 驱动 构建日期${FIREFOX_VERSION}-${BUILD_DATE}浏览器 构建日期${FIREFOX_SHORT_VERSION}-geckodriver-${GECKODRIVER_SHORT_VERSION}-grid-${TAG_VERSION}短版本完整组合${FIREFOX_SHORT_VERSION}-geckodriver-${GECKODRIVER_SHORT_VERSION}-${BUILD_DATE}短版本 驱动 构建日期${FIREFOX_SHORT_VERSION}-${BUILD_DATE}短版本 构建日期由于本次RELEASE_OLD_VERSIONtrue脚本跳过了第 219 行if分支中额外追加的 4 个无构建日期标签${FIREFOX_VERSION}-geckodriver-${GECKODRIVER_VERSION}、${FIREFOX_VERSION}、${FIREFOX_SHORT_VERSION}-geckodriver-${GECKODRIVER_SHORT_VERSION}、${FIREFOX_SHORT_VERSION}。因此本次实际产出的完整标签清单为镜像标签selenium/node-firefox129.0.2-geckodriver-0.36.0-grid-4.31.0-20250414selenium/standalone-firefox129.0.2-geckodriver-0.36.0-grid-4.31.0-20250414selenium/node-firefox129.0.2-geckodriver-0.36.0-20250414selenium/standalone-firefox129.0.2-geckodriver-0.36.0-20250414selenium/node-firefox129.0.2-20250414selenium/standalone-firefox129.0.2-20250414selenium/node-firefox129.0-geckodriver-0.36-grid-4.31.0-20250414selenium/standalone-firefox129.0-geckodriver-0.36-grid-4.31.0-20250414selenium/node-firefox129.0-geckodriver-0.36-20250414selenium/standalone-firefox129.0-geckodriver-0.36-20250414selenium/node-firefox129.0-20250414selenium/standalone-firefox129.0-20250414每个标签都由retag()函数tag_and_push_browser_images.sh落到两个镜像上。默认路径执行docker tag本地复制PUSH_IMAGEtrue时额外docker push当PROMOTE_TAGStrue时则改用docker buildx imagetools create直接从注册表复制 manifestregistry-to-registry从而保留多架构镜像。这种一版多标签策略让用户既可以用最完整的标签精确复现某次发布也可以用129.0这样的短标签锁定浏览器大版本。标签命名约定与选型建议docker-selenium 的 Firefox 标签遵循通用约定详见 docs/docker-hub/node-firefox.md 与 docs/docker-hub/standalone-firefox.mdselenium/node-firefox-Major.Minor.Patch-YYYYMMDD selenium/node-firefox-browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDDstandalone-firefox同构只是把node换成standalone。完整标签129.0.2-geckodriver-0.36.0-grid-4.31.0-20250414的含义是Firefox 129.0.2、GeckoDriver 0.36.0、Selenium Grid 4.31.0、构建于 2025-04-14。官方文档明确建议日常演示可用latest但生产与回归测试应使用完整标签固定浏览器与 Grid 版本避免latest滚动更新导致的环境漂移。两类镜像的使用差异在仓库文档中有完整示例。Node 模式需要先建网络再接入 Hubdocs/docker-hub/node-firefox.mddocker 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:129.0-geckodriver-0.36-grid-4.31.0-20250414Standalone 模式单容器即含 Hub 与 Nodedocs/docker-hub/standalone-firefox.mddocker run -d -p 4444:4444 -p 7900:7900 --shm-size2g \ selenium/standalone-firefox:129.0-geckodriver-0.36-grid-4.31.0-20250414两个文档都特别提示包含浏览器的镜像务必使用--shm-size2g挂载宿主共享内存否则浏览器进程容易因/dev/shm过小而崩溃同时可通过http://localhost:7900/?autoconnect1resizescalepasswordsecretnoVNC实时观察容器内浏览器画面。从源码看 Firefox 129 镜像的构建支撑发布记录中Firefox 129.0.2与GeckoDriver 0.36.0的搭配在构建侧由 NodeFirefox/Dockerfile 保证Firefox 安装NodeFirefox/Dockerfile通过构建参数FIREFOX_VERSION如129.0.2拼出 Mozilla 官方 CDN 的 deb 包地址先做 HTTP 404 探测回退到 tar.bz2 包再由 install-firefox-package.sh 完成安装latest/beta-latest/esr-latest等通道则走 install-firefox-apt.sh 的 apt 路径。GeckoDriver 安装NodeFirefox/DockerfileGECKODRIVER_VERSION默认latest时先从 GitHub releases 探测最新版本再按架构linux64/linux-aarch64下载对应 tarball解压后通过软链接ln -fs固定到/usr/bin/geckodriver。浏览器信息注册NodeFirefox/Dockerfile构建时将firefox、版本号与二进制路径写入/opt/selenium/browsers/firefox/下的name、version、binary_location文件供 Selenium Grid Node 的配置生成见 NodeBase/generate_config自动识别浏览器能力。架构方面Dockerfile 中对 amd64 与 aarch64 的包源选择逻辑印证了仓库同时提供linux/amd64与linux/arm64镜像generate_release_notes.sh 的 Firefox arm64 版本探测即用于此但需要注意打标签脚本的默认PLATFORM为linux/amd64tag_and_push_browser_images.sh跨架构构建时需显式指定。版本矩阵与归档体系中的位置firefox_129.md所处的 CHANGELOG 是一份Selenium Grid × 浏览器版本矩阵。当前矩阵显示4.31.0 这一 Grid 版本覆盖 Firefox 98 至 136其中129单元格链接到的正是本文分析的归档记录每个 ✓ 都对应一份形如firefox_主版本号.md的发布记录构成查版本 → 读记录 → 选标签的完整闭环。归档archived/目录按 Grid 版本分层的结构也便于按需回溯任意历史组合。值得注意的版本演进同样打包 Firefox 129.0.2最新 Grid 版本 4.48.0 的对应记录 CHANGELOG/4.48.0/firefox_129.md 显示 GeckoDriver 已升级为 0.37.1。这说明同一浏览器版本会被多个 Grid 版本持续携带而驱动版本随发布动态更新——因此选择标签时必须同时核对浏览器、驱动与 Grid 三者版本这正是完整标签存在的意义。手动复现与验证该发布记录本质是脚本日志无需理解即可照做。若要本地复现可先确认本地已有selenium/node-firefox:4.31.0-20250414镜像或先docker pull然后执行./tag_and_push_browser_images.sh 4.31.0 20250414 selenium false firefox true命令结束后用docker images --filterreferenceselenium/*firefox*即可核对 12 个标签是否全部生成。日常开发流程中该脚本通过 Makefile 目标统一驱动Makefilemake tag_and_push_browser_images会依次为 chrome、chrome-for-testing、chromium、edge、firefox 五种浏览器执行同一脚本其中 Firefox 对应tag_and_push_firefox_images目标。这也解释了CHANGELOG中每个版本目录下为何总是五个浏览器各一组记录。小结一份看似只有命令日志的firefox_129.md背后是 docker-selenium 一套完整、自洽的版本治理体系镜像构建时写入浏览器元数据NodeFirefox/Dockerfile、发布时在容器内实测版本并生成 12 个渐进式标签tag_and_push_browser_images.sh、矩阵文档将每条记录组织成可检索索引CHANGELOG/README.md。理解这套机制后无论是阅读任意一份归档记录、选择精确的 Firefox 镜像标签还是排查标签与二进制不符类问题都有了明确的依据与操作路径。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 浏览器镜像标签发布机制解析以 Selenium Grid 4.31.0 的 Firefox 120.0.1 镜像为例docker selenium 浏览器镜像标签发布机制解析以 Selenium Grid 4.31.0 的 Firefox 120.0.1 镜像为例 Sele测试后端云原生容器编排可观测性docker-selenium Chrome 129 镜像标签解析从 4.31.0 版本发布记录看懂 Selenium Grid 镜像 Tagging Conventiondocker selenium Chrome 129 镜像标签解析从 4.31.0 版本发布记录看懂 Selenium Grid 镜像 Tagging Con测试后端云原生容器编排可观测性docker-selenium 镜像标签体系全解析以 Selenium Grid 4.31.0 / Edge 131 发布记录为例docker selenium 镜像标签体系全解析以 Selenium Grid 4.31.0 / Edge 131 发布记录为例 本文以 CHANGELOG测试后端云原生容器编排可观测性上一篇TTGSnackbar 与 Swift 并发如何用 async/await 优雅处理交互结果下一篇SubHook常见问题排查从安装失败到内存权限错误的完整解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表