ARTICLE DETAIL

资讯详情

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

docker-selenium 浏览器镜像版本标签机制全解:以 Selenium Grid 4.30.0 的 Firefox 102 镜像为例

docker-selenium 浏览器镜像版本标签机制全解:以 Selenium Grid 4.30.0 的 Firefox 102 镜像为例 测试后端云原生容器编排可观测性【免费下载链接】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.30.0/firefox_102.md 这份发布记录为切入点完整讲解仓库如何为 Firefox 浏览器镜像node-firefox与standalone-firefox生成多粒度版本标签并发布到镜像仓库的底层机制。读完本文你将掌握tag_and_push_browser_images.sh的参数含义、12 类标签的命名规范与适用场景、Firefox/GeckoDriver 版本如何被自动探测以及这一机制在整个发布链路构建 → 打标 → 推送 → 记录归档中的位置。文档定位浏览器版本矩阵中的一条可追溯记录docker-selenium 仓库在 CHANGELOG/README.md 中维护着一张Selenium Grid × Browser Version矩阵表其动机在文档开篇有明确说明在为 Grid 持续提供最新核心版本的同时保留用户固定pin特定浏览器版本进行测试的能力包括跨浏览器测试、或在某些浏览器版本存在兼容性问题时锁定旧版本。矩阵中的每个 ✓ 都链接到对应的发布记录文件firefox_102.md正是 Selenium Grid 4.30.0 这一行、Firefox 102 这一列所指向的详细变更记录。这份记录不是手工填写的表格而是真实执行发布脚本后的标准输出归档——它直接证明了仓库打标签 → 推送 → 记录这条可审计的发布流水线确实运行过同时为使用者提供了一份精确到浏览器版本 × 驱动版本 × Grid 版本 × 构建日期的镜像清单。一次真实的标签发布过程4.30.0 中的 Firefox 102.0.1firefox_102.md的完整正文如下该段输出直接来自仓库中的 tag_and_push_browser_images.sh./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 - 102.0.1 Short Firefox version - 102.0 GeckoDriver version - 0.36.0 Short GeckoDriver version - 0.36 Tagged selenium/node-firefox:102.0.1-geckodriver-0.36.0-grid-4.30.0-20250323 Tagged selenium/standalone-firefox:102.0.1-geckodriver-0.36.0-grid-4.30.0-20250323 Tagged selenium/node-firefox:102.0.1-geckodriver-0.36.0-20250323 Tagged selenium/standalone-firefox:102.0.1-geckodriver-0.36.0-20250323 Tagged selenium/node-firefox:102.0.1-20250323 Tagged selenium/standalone-firefox:102.0.1-20250323 Tagged selenium/node-firefox:102.0-geckodriver-0.36-grid-4.30.0-20250323 Tagged selenium/standalone-firefox:102.0-geckodriver-0.36-grid-4.30.0-20250323 Tagged selenium/node-firefox:102.0-geckodriver-0.36-20250323 Tagged selenium/standalone-firefox:102.0-geckodriver-0.36-20250323 Tagged selenium/node-firefox:102.0-20250323 Tagged selenium/standalone-firefox:102.0-20250323这段输出透露出几条关键信息一次执行、两个镜像、六组标签node-firefox与standalone-firefox各自获得完全相同的 6 个标签合计 12 行Tagged记录版本探测是自动完成的Firefox 版本102.0.1、GeckoDriver 版本0.36.0都不是手写参数而是脚本通过docker run进入容器执行firefox --version、geckodriver --version探测出来的短版本是对称推导的102.0.1 → 102.0、0.36.0 → 0.36取主版本号的前两段Grid 版本始终带上构建日期4.30.0-20250323保证每次构建的镜像彼此可区分。脚本全解tag_and_push_browser_images.sh发布记录中的每一行输出都能在 tag_and_push_browser_images.sh 中找到对应实现。该脚本是 Makefile 中tag_and_push_firefox_images等目标调用的底层工具支持chrome、chromium、edge、firefox、chrome-for-testing五种浏览器。参数表脚本开头L1-L9定义了 7 个位置参数位置参数含义文档示例值$1VERSIONSelenium Grid 版本号4.30.0$2BUILD_DATE构建日期YYYYMMDD20250323$3NAMESPACE镜像命名空间selenium$4PUSH_IMAGE是否执行docker push默认falsefalse$5BROWSER浏览器类型case 分发键firefox$6RELEASE_OLD_VERSION是否为旧版本重新打标默认falsetrue$7PLATFORM目标平台chrome 分支专用默认linux/amd64—其中TAG_VERSION${VERSION}-${BUILD_DATE}L15拼接出 Grid 完整版本也就是输出第一行的4.30.0-20250323。Firefox 分支的执行流程脚本主体是一个case ${BROWSER}分发L61-L285firefox分支位于 L195-L235核心逻辑分三步第一步探测浏览器与驱动版本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})脚本以docker run临时启动selenium/node-firefox:4.30.0-20250323分别执行firefox --version与geckodriver --version再通过awk抽取版本号。这要求镜像必须先构建成功并存在于本地——这正是发布流程中先make firefox后打标签的依赖顺序的由来。GeckoDriver 的版本抽取使用NR1只取输出第一行是因为geckodriver --version的输出包含多行描述文本版本号位于首行。第二步推导短版本short_version() 函数把完整版本按.切分后只保留前两段function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }于是102.0.1 → 102.00.36.0 → 0.36与输出完全一致。第三步组装标签数组并逐组打标FIREFOX_TAGS数组L206-L230定义了六组基础标签随后循环对node-firefox与standalone-firefox两个镜像分别执行retagfor firefox_tag in ${FIREFOX_TAGS[]}; do retag node-firefox ${firefox_tag} retag standalone-firefox ${firefox_tag} doneretag()L31-L51默认执行docker tag当PUSH_IMAGEtrue时追加docker push。脚本同时支持PROMOTE_TAGStrue的registry-to-registry发布模式——此时改用docker buildx imagetools create在不拉取镜像到本地的前提下直接把多架构 manifest 从源仓库指向新标签确保归档发布的镜像 digest 与测试通过的完全一致。六组标签的命名规范与适用场景标签形态示例node-firefox信息粒度适用场景完整浏览器-完整驱动-grid-Grid完整版本102.0.1-geckodriver-0.36.0-grid-4.30.0-20250323五要素齐全精确复现某次发布回归排查完整浏览器-完整驱动-构建日期102.0.1-geckodriver-0.36.0-20250323浏览器驱动日期锁定当天构建的驱动组合完整浏览器-构建日期102.0.1-20250323浏览器日期固定浏览器版本于某天构建短浏览器-短驱动-grid-Grid完整版本102.0-geckodriver-0.36-grid-4.30.0-20250323短版本五要素大版本级别的复现短浏览器-短驱动-构建日期102.0-geckodriver-0.36-20250323短版本三要素大版本日期组合短浏览器-构建日期102.0-20250323短版本日期只关心浏览器大版本RELEASE_OLD_VERSIONtrue的关键作用当此参数为false默认时脚本还会追加四组不带构建日期的浮动标签——102.0.1-geckodriver-0.36.0、102.0.1、102.0-geckodriver-0.36、102.0L219-L229用于日常docker pull的便捷引用。而当对已经发布过的旧版本重新打标时如 4.30.0 归档中的这次操作脚本刻意跳过这四组标签避免旧发布覆盖当前最新的浮动标签、造成:102.0指向歧义。这正是文档命令中第 6 个参数为true的语义。从镜像构建到标签发布的完整链路firefox_102.md记录的是链条的最后一环其上游在仓库中环环相扣镜像构建Makefile 中firefox目标L590-L593先构建node-firefoxstandalone_firefox目标L614-L617再从node-firefox派生standalone-firefoxFirefox 与 GeckoDriver 的安装NodeFirefox/Dockerfile 的 L21-L70 安装指定版本的 Firefox支持latest、beta-latest、esr-latest及具体数字版本数字版本走 Mozilla CDN 下载路径L72-L86 下载对应 GeckoDriver 并以符号链接暴露到/usr/bin/geckodriver。构建期间还会把浏览器名称、版本和 binary 路径写入/opt/selenium/browsers/firefox/L93-L96供 Grid 节点注册时上报能力版本自检make firefox_upgrade_versionL765-L770构建后立即以docker run验证selenium-server.jar info --version、firefox --version、geckodriver --version与打标脚本的探测命令一脉相承打标推送make tag_and_push_firefox_imagesL795-L796把$(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)透传给脚本即firefox_102.md第一行命令的真实来源记录归档发布记录按CHANGELOG/Grid版本/浏览器_主版本.md存放旧版本移入archived/目录由 CHANGELOG/README.md 统一索引。同一浏览器版本的跨版本演进4.30.0 与 4.48.0 对比将归档记录与最新记录对照可以观察到版本矩阵的演进逻辑在 CHANGELOG/4.48.0/firefox_102.md 中同一 Firefox102.0.1镜像在 Selenium Grid 4.48.0 发布中被配上了 GeckoDriver0.37.14.30.0 时为 0.36.0。这说明浏览器版本矩阵的维护是逐 Grid 版本持续进行的Firefox 102 这类旧版本仍会随新 Grid 发布重新构建以便用户在升级 Grid 的同时保留旧浏览器驱动版本会随发布演进独立升级因此浏览器版本相同 ≠ 镜像内容相同精确引用应使用包含驱动与 Grid 版本的完整标签。这也解释了为什么矩阵 README 特意注明并非每个 Grid 与浏览器版本的组合都经过完整测试CHANGELOG/README.md 的 Note 段落使用者需要依据自身测试需求评估选择。实践如何选用这些标签以本记录为例你可以直接在任意运行 Docker 的机器上拉取对应镜像# 精确复现本次发布浏览器驱动Grid日期 docker pull selenium/node-firefox:102.0.1-geckodriver-0.36.0-grid-4.30.0-20250323 # 日常固定浏览器主版本若该发布允许浮动标签通常为最新发布所保留 docker pull selenium/node-firefox:102.0 # 在 Selenium Grid 中作为 Node 运行 docker run -d -p 5555:5555 \ -e SE_EVENT_BUS_PUBLISH_PORT4442 \ -e SE_EVENT_BUS_SUBSCRIBE_PORT4443 \ selenium/node-firefox:102.0.1-geckodriver-0.36.0-20250323选择标签的建议CI 与生产环境优先使用包含grid-段或至少包含构建日期的标签保证可复现性浮动标签仅浏览器版本号适合本地开发但需意识到它指向的 digest 可能随新发布更新。总结CHANGELOG/archived/4.30.0/firefox_102.md虽然只是一份简短的发布输出但它背后是一套完整且可审计的镜像版本治理体系构建时在 NodeFirefox/Dockerfile 中安装指定版本浏览器与驱动发布时由 tag_and_push_browser_images.sh 自动探测版本、生成六组标签并同步到 Node 与 Standalone 两种形态再由 CHANGELOG/README.md 的版本矩阵对外索引。理解这套机制你就能在 docker-selenium 的镜像海洋中精准定位、复现和锁定任意一次浏览器发布。赞分享测试后端云原生容器编排可观测性【免费下载链接】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点击查看免费下载相关推荐LMCache CacheGen 压缩指南基于分布特性的 KV Cache 紧凑比特流编码LMCache CacheGen 压缩指南基于分布特性的 KV Cache 紧凑比特流编码 导读 CacheGen 是 LMCache 内置的一种 KV ca测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系全解析以 Selenium Grid 4.48.0 与 Chrome 102 版本组合为例docker selenium 浏览器镜像标签体系全解析以 Selenium Grid 4.48.0 与 Chrome 102 版本组合为例 在 docker测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签发布机制全解析以 Selenium Grid 4.28.1 与 Firefox 103.0.2 为例docker selenium 浏览器镜像标签发布机制全解析以 Selenium Grid 4.28.1 与 Firefox 103.0.2 为例 导读 本文测试后端云原生容器编排可观测性上一篇CANN PTO-ISA TCOLARGMIN 指令详解逐列最小值索引归约的数学语义、汇编形态与多平台实现下一篇StarRocks inspect_task_runs() 详解以 JSON 视角透视 FE TaskManager 的任务运行状态创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表