测试后端云原生容器编排可观测性【免费下载链接】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.30.0/firefox_106.md 为主线完整还原 docker-selenium 项目在发布 Selenium Grid 4.30.0 时如何为 Firefox 106.0.5 镜像执行自动打标与推送并深入解析 tag_and_push_browser_images.sh 脚本的版本探测、短版本派生、多 Tag 生成与推送机制。读完本文你将掌握node-firefox/standalone-firefox镜像 Tag 的命名规则、归档 CHANGELOG 文件的阅读方法以及如何在跨浏览器测试或版本锁定场景中精准拉取并运行指定 Firefox 版本镜像。归档 CHANGELOG 文件是什么一次浏览器镜像发布的完整快照docker-selenium 仓库在CHANGELOG/目录下为每一个 Grid 发布版本保留一组浏览器版本记录文件命名形如firefox_106.md表示 Firefox 106 系列。每当一次发布执行浏览器镜像打标后脚本输出会被记录成 Markdown 文件归档。由于当前最新版本目录只保留最近的 Grid 版本历史版本会被 CHANGELOG/generate-matrix-readme.py 中的archive_old_versions()逻辑移动到archived/子目录这就是本文主角位于CHANGELOG/archived/4.30.0/的原因。该文件本质上是一段可直接复现的终端输出记录了以下关键事实执行命令./tag_and_push_browser_images.sh 4.30.0 20250323 selenium false firefox trueSelenium Grid 版本4.30.0-20250323Grid 主版本 构建日期Firefox 版本106.0.5短版本106.0GeckoDriver 版本0.36.0短版本0.36生成的全部镜像 Tag对node-firefox和standalone-firefox各 6 个共 12 个完整还原Firefox 106.0.5 在 Grid 4.30.0 的全部镜像 Tag归档记录中生成的 12 个 Tag 按命名维度可划分为三组每组同时打给 Node 与 Standalone 镜像维度Tag 示例node 与 standalone 前缀各一份全版本 驱动 Grid 标识106.0.5-geckodriver-0.36.0-grid-4.30.0-20250323全版本 驱动 构建日期106.0.5-geckodriver-0.36.0-20250323全版本 构建日期106.0.5-20250323短版本 短驱动 Grid 标识106.0-geckodriver-0.36-grid-4.30.0-20250323短版本 短驱动 构建日期106.0-geckodriver-0.36-20250323短版本 构建日期106.0-20250323完整输出如下selenium为命名空间node-firefox与standalone-firefox各打 6 个 Tag./tag_and_push_browser_images.sh 4.30.0 20250323 selenium false firefox true Tagging images for browser firefox, version 4.30.0, build date 20250323, namespace selenium Selenium Grid version - 4.30.0-20250323 Firefox version - 106.0.5 Short Firefox version - 106.0 GeckoDriver version - 0.36.0 Short GeckoDriver version - 0.36 Tagged selenium/node-firefox:106.0.5-geckodriver-0.36.0-grid-4.30.0-20250323 Tagged selenium/standalone-firefox:106.0.5-geckodriver-0.36.0-grid-4.30.0-20250323 Tagged selenium/node-firefox:106.0.5-geckodriver-0.36.0-20250323 Tagged selenium/standalone-firefox:106.0.5-geckodriver-0.36.0-20250323 Tagged selenium/node-firefox:106.0.5-20250323 Tagged selenium/standalone-firefox:106.0.5-20250323 Tagged selenium/node-firefox:106.0-geckodriver-0.36-grid-4.30.0-20250323 Tagged selenium/standalone-firefox:106.0-geckodriver-0.36-grid-4.30.0-20250323 Tagged selenium/node-firefox:106.0-geckodriver-0.36-20250323 Tagged selenium/standalone-firefox:106.0-geckodriver-0.36-20250323 Tagged selenium/node-firefox:106.0-20250323 Tagged selenium/standalone-firefox:106.0-20250323注意命令的第六个参数为true即RELEASE_OLD_VERSIONtrue。这意味着 Firefox 106 属于在更早的 Grid 版本中已经发布过的“旧版本”因此脚本跳过了纯版本号 Tag如106.0.5、106.0等这些 Tag 已指向早期构建只为本次发布追加带构建日期或 Grid 版本标识的新 Tag。若RELEASE_OLD_VERSIONfalse新浏览器版本首次发布每个镜像还会额外生成 4 个纯版本类 Tag。为什么同一份记录要跨多个 Grid 版本持续存在对比同目录下的 CHANGELOG/4.48.0/firefox_106.md 可以发现Firefox106.0.5在 Grid4.48.0-20260909中再次被打标但此时配套的 GeckoDriver 已升级为0.37.1短版本0.37。这说明该 CHANGELOG 矩阵的核心设计意图是——浏览器版本可以被“钉住”pin而 Selenium Grid 核心与驱动版本可以持续演进。这正是 CHANGELOG/README.md 中声明的动机既为使用方提供最新的 Grid 功能又允许因浏览器兼容性问题锁定特定浏览器版本。README 同时明确提示并非所有 Grid × 浏览器组合都经过完整测试使用者需基于自身测试需求评估。打标脚本源码解析版本如何被探测、Tag 如何被生成归档输出由 tag_and_push_browser_images.sh 生成。脚本共接收 7 个位置参数参数含义默认值$1VERSIONSelenium Grid 版本如4.30.0无$2BUILD_DATE构建日期YYYYMMDD无$3NAMESPACE镜像命名空间无实际取NAME$4PUSH_IMAGE是否推送false$5BROWSER浏览器类型firefox/chrome/chromium/edge/chrome-for-testing无$6RELEASE_OLD_VERSION是否为已发布过的旧版本false$7PLATFORM平台仅 chrome/chrome-for-testing 使用linux/amd64对 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}即先取selenium/node-firefox:4.30.0-20250323这个 Grid 标识的基础 Tag再从容器内解析firefox --version与geckodriver --version的真实输出版本号。短版本由short_version()函数派生——按.拆分后取前两段106.0.5→106.00.36.0→0.36。打标通过retag()函数完成其行为分两种模式常规模式PROMOTE_TAGS未开启docker tag本地镜像 可选docker push对应命令第四个参数false即本次仅打标不推送镜像推广模式PROMOTE_TAGStrue直接用docker buildx imagetools create在 registry 之间复制 manifest避免docker pull只带回单架构镜像的问题可选通过PROMOTE_GHCR_NAMESPACE同步镜像到 GHCR。在 Makefile 中该脚本由tag_and_push_firefox_images目标调用tag_and_push_firefox_images: ./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)对应地firefox_upgrade_version目标Makefile展示了发布前的验证套路依次在standalone-firefox容器内执行selenium-server.jar info --version、firefox --version、geckodriver --version确保 Grid 服务端、浏览器、驱动三方版本一致后再打标。Firefox 106.0.5 与 GeckoDriver 0.36.0 如何进入镜像打标脚本探测到的版本来自 NodeFirefox/Dockerfile 的构建产物。该 Dockerfile 通过两个可覆盖的构建参数控制版本FIREFOX_VERSION默认latest按架构amd64 →x86_64arm64 →aarch64从 Mozilla 官方下载地址取对应版本安装包优先.deb若返回 404 则回退.tar.bz2GECKODRIVER_VERSION默认latest先解析 GeckoDriver 最新 release 的实际版本再按架构选择linux64或linux-aarch64包下载解压并软链接到/usr/bin/geckodriver。安装脚本 NodeFirefox/install-firefox-package.sh 根据下载 URL 后缀分派三种安装路径.deb直装、.tar.bz2/.tar.xz解压到/opt/firefox-版本后软链接。构建尾声还会将浏览器信息写入/opt/selenium/browsers/firefox/name、version、binary_location供 Grid Node 配置与日志使用同时声明SE_OTEL_SERVICE_NAMEselenium-node-firefox与SE_NODE_ENABLE_MANAGED_DOWNLOADStrue环境变量。因此打标脚本取到的106.0.5/0.36.0就是容器内实际运行的二进制版本Tag 与真实内容严格一致。如何拉取并使用 Firefox 106.0.5 镜像以 Node 模式加入 Grid Hub参考 docs/docker-hub/node-firefox.md 的 Hub-and-Node 拓扑先建网络再启动 Hub最后让 Node 通过事件总线容器名自动注册docker 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:106.0.5-geckodriver-0.36.0-grid-4.30.0-20250323若使用 Windows PowerShell换行符需替换为反引号。随后将 WebDriver 测试指向http://localhost:4444需要观察容器内画面时访问 noVNC 界面http://localhost:7900/?autoconnect1resizescalepasswordsecret默认密码secret。用完可执行docker network rm grid清理。以 Standalone 模式一键运行参考 docs/docker-hub/standalone-firefox.md单容器即可承载完整 Grid 与 Firefoxdocker run -d -p 4444:4444 -p 7900:7900 --shm-size2g \ selenium/standalone-firefox:106.0.5-geckodriver-0.36.0-grid-4.30.0-20250323重要前提所有含浏览器的镜像都必须添加--shm-size2g使用宿主机共享内存否则浏览器进程极易因/dev/shm空间不足而崩溃。Tag 选择建议按 docs/docker-hub/node-firefox.md 的说明Tag 通用结构为selenium/node-firefox-Major.Minor.Patch-YYYYMMDD selenium/node-firefox-browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD两者可自由组合即本记录生成的 6 种维度。日常使用建议避免latest改用完整 Tag 显式钉住浏览器、驱动与 Grid 版本若只需取某个发布周期内“最近一次”的 Firefox 106 构建用106.0.5-20250323这类带构建日期的精简 Tag 即可。归档矩阵的维护机制与阅读方式CHANGELOG/generate-matrix-readme.py 负责把每个firefox_106.md这类文件汇总成 CHANGELOG/README.md 中的“Selenium Grid x Browser Version Matrix”矩阵表。其工作流程分三步归档archive_old_versions()将CHANGELOG/下非最新版本目录移动到archived/所以 4.30.0 的记录位于archived/下扫描scan_changelog()用正则([\w-])_(\d)\.md解析出每个 Grid 版本下覆盖的浏览器与版本集合生成generate_readme()按浏览器分组输出表格每个 ✓ 链接到对应记录文件。因此阅读方式很简单在矩阵表的 Firefox 分区找到 Grid 版本4.30.0与浏览器版本106交叉处的 ✓点击即可进入本文解析的这份发布快照。若你的测试需要 Firefox 106 而 Grid 核心希望用更新的版本可在矩阵中横向比较多个 Grid 版本下 Firefox 106 记录中 GeckoDriver 的差异如 4.30.0 用0.36.04.48.0 用0.37.1据此选择最匹配的组合。小结一份看似只有 21 行的归档 CHANGELOG 文件背后串联起 docker-selenium 的三条核心链路构建NodeFirefox/Dockerfile 将 Firefox 106.0.5 与 GeckoDriver 0.36.0 固化进镜像、打标tag_and_push_browser_images.sh 在容器内探测版本并派生 12 个多维 Tag、使用按 Tag 精确拉取 Node 或 Standalone 镜像运行测试。掌握这套 Tag 体系即可在跨浏览器测试中随心锁定浏览器版本同时享受 Selenium 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 浏览器镜像标签体系深度解析以 Firefox 106.0.5 Selenium Grid 4.28.1 发布记录为例docker selenium 浏览器镜像标签体系深度解析以 Firefox 106.0.5 Selenium Grid 4.28.1 发布记录为例 本篇测试后端云原生容器编排可观测性Selenium Docker 镜像 Firefox 122.0.1 发布记录深度解读docker-selenium 4.28.1 的镜像打标流程与 Tag 体系Selenium Docker 镜像 Firefox 122.0.1 发布记录深度解读docker selenium 4.28.1 的镜像打标流程与 Tag测试后端云原生容器编排可观测性opencodex Release Train 实战PR 136 137 的 dev 集成、Timer-Leak 修复与 GUI i18n 门禁对齐opencodex Release Train 实战PR 136 137 的 dev 集成、Timer Leak 修复与 GUI i18n 门禁对齐 本文测试后端云原生容器编排可观测性上一篇【亲测免费】 探秘JavyJavaScript转WebAssembly的利器下一篇Ultimate Vocal Remover三步出干净伴奏创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?