多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

深入解析 docker-selenium 浏览器镜像标签体系:以 Chrome 131 发布记录为例详解 tag_and_push_browser_images.sh

深入解析 docker-selenium 浏览器镜像标签体系:以 Chrome 131 发布记录为例详解 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.35.0/chrome_131.md 为切入点完整剖析 docker-selenium 项目中浏览器镜像node-chrome、standalone-chrome发布时标签Tag的生成规则、版本探测与推送到镜像仓库的完整流程。读完后你将能读懂任何一条形如selenium/node-chrome:131.0.6778.264-chromedriver-131.0.6778.264-grid-4.35.0-20250909的标签含义理解短版本标签与网格版本标签的设计意图并掌握通过 tag_and_push_browser_images.sh 复现或定制发布流程的方法。一、发布记录里的完整命令Chrome 131 与 4.35.0 网格归档的发布记录chrome_131.md保存了 2025 年 9 月 9 日构建日期20250909针对 Selenium Grid4.35.0、浏览器 Chrome 131 执行标签打推的完整命令行输出命令原文如下./tag_and_push_browser_images.sh 4.35.0 20250909 selenium false chrome true Tagging images for browser chrome, version 4.35.0, build date 20250909, namespace selenium Selenium Grid version - 4.35.0-20250909 Chrome version - 131.0.6778.264 Short Chrome version - 131.0 ChromeDriver version - 131.0.6778.264 Short ChromeDriver version - 131.0 Tagged selenium/node-chrome:131.0.6778.264-chromedriver-131.0.6778.264-grid-4.35.0-20250909 Tagged selenium/standalone-chrome:131.0.6778.264-chromedriver-131.0.6778.264-grid-4.35.0-20250909 Tagged selenium/node-chrome:131.0.6778.264-chromedriver-131.0.6778.264-20250909 Tagged selenium/standalone-chrome:131.0.6778.264-chromedriver-131.0.6778.264-20250909 Tagged selenium/node-chrome:131.0.6778.264-20250909 Tagged selenium/standalone-chrome:131.0.6778.264-20250909 Tagged selenium/node-chrome:131.0-chromedriver-131.0-grid-4.35.0-20250909 Tagged selenium/standalone-chrome:131.0-chromedriver-131.0-grid-4.35.0-20250909 Tagged selenium/node-chrome:131.0-chromedriver-131.0-20250909 Tagged selenium/standalone-chrome:131.0-chromedriver-131.0-20250909 Tagged selenium/node-chrome:131.0-20250909 Tagged selenium/standalone-chrome:131.0-20250909这份输出同时揭示了四个关键信息命令的七个位置参数、浏览器与驱动版本一致的对齐策略、六类标签的命名规则以及一次发布、两镜像共用的分发方式。下文逐一展开。二、命令参数逐项解读七个位置参数决定一次发布对照 tag_and_push_browser_images.sh 的入口定义该脚本接收最多七个位置参数参数位变量本次取值含义$1VERSION4.35.0Selenium Grid 版本号与构建日期拼接为网格版本标签$2BUILD_DATE20250909构建日期YYYYMMDD用于区分同版本不同批次$3NAMESPACEselenium镜像命名空间实际生效值见下文实现说明$4PUSH_IMAGEfalse是否在打标签后执行docker push$5BROWSERchrome浏览器类型可取值chrome/chromium/edge/firefox/chrome-for-testing$6RELEASE_OLD_VERSIONtrue是否为归档旧版本发布决定是否追加不带构建日期的浮动标签$7PLATFORM缺省linux/amd64版本探测时docker run使用的平台参数脚本在 第 15 行 计算TAG_VERSION${VERSION}-${BUILD_DATE}即4.35.0-20250909并输出Tagging images for browser chrome, version 4.35.0, build date 20250909。值得注意的一个实现细节脚本虽然接收第 3 个参数NAMESPACE但随后的NAMESPACE${NAME:-selenium}会以环境变量NAME缺省selenium重新赋值命名空间。也就是说当通过 Makefile 调用NAME默认为selenium见 Makefile或直接在未设置NAME的 shell 中调用时命名空间始终是selenium与文档输出一致。三、标签体系三组命名模式 × 长短版本 × 双镜像3.1 六类标签的生成规则以chrome分支为例见 tag_and_push_browser_images.sh脚本先探测出三个版本号再据此组装标签数组CHROME_TAGS完整版本号131.0.6778.264Chrome 与 ChromeDriver 相同短版本号131.0由short_version()函数取前两段点分号见 L53-L57网格版本标签4.35.0-20250909当RELEASE_OLD_VERSIONtrue本次归档发布场景时生成的 6 个标签分为两组各 3 个组标签本次实际值打在两镜像上完整版本 × 网格{ver}-chromedriver-{drv}-grid-{tag}131.0.6778.264-chromedriver-131.0.6778.264-grid-4.35.0-20250909完整版本 × 构建日期{ver}-chromedriver-{drv}-{build}131.0.6778.264-chromedriver-131.0.6778.264-20250909完整版本 × 构建日期纯版本{ver}-{build}131.0.6778.264-20250909短版本 × 网格{short}-chromedriver-{short}-grid-{tag}131.0-chromedriver-131.0-grid-4.35.0-20250909短版本 × 构建日期驱动{short}-chromedriver-{short}-{build}131.0-chromedriver-131.0-20250909短版本 × 构建日期纯版本{short}-{build}131.0-20250909随后脚本对node-chrome与standalone-chrome两个镜像逐一执行retag因此最终输出6 个标签 × 2 个镜像 12 行 Tagged记录。standalone-chrome在构建时以node-chrome为基础镜像见 Makefile 中 standalone-chrome 构建链二者共享同一浏览器版本所以标签一一对应。3.2 各命名段的设计意图grid-{tag}段精确锁定浏览器 驱动 Selenium Grid 主程序版本三者组合适合需要完全可复现的 CI 场景{build}日期段标识同一浏览器版本在不同构建批次下的镜像便于追踪镜像内容变更131.0短版本段保留主次版本两个段便于人类记忆与快速指定大版本线如升级 Chrome 132 后测试脚本是否仍兼容不带任何日期的纯版本标签如131.0.6778.264仅在RELEASE_OLD_VERSIONfalse新版本发布时追加共 4 个{ver}-chromedriver-{drv}、{ver}、{short}-chromedriver-{short}、{short}。归档旧版本不打这些标签是为了避免旧版本覆盖/混淆当前最新版本的浮动标签对应脚本 L88-L99 的注释Browser version and browser driver version。四、源码级拆解版本探测、retag 与推送机制4.1 版本号如何探测—— 直接运行容器内二进制脚本不依赖外部版本清单而是通过docker run临时拉起已构建好的node-chrome:4.35.0-20250909镜像执行浏览器与驱动的--version命令来获取版本CHROME_VERSION$(docker run --platform ${PLATFORM} --rm ${NAMESPACE}/node-chrome:${TAG_VERSION} google-chrome --version | awk {print $3}) CHROMEDRIVER_VERSION$(docker run --platform ${PLATFORM} --rm ${NAMESPACE}/node-chrome:${TAG_VERSION} chromedriver --version | awk {print $2})这是以镜像内实际二进制为准的发布策略标签上的版本号一定与容器内google-chrome --version的输出一致杜绝了版本清单与镜像内容脱节的问题。--platform ${PLATFORM}支持对非本机架构如 arm64的镜像执行探测--rm保证探测容器即用即弃。short_version()则通过把版本号按.切分成数组后取前两段得到131.0。4.2 retag从源标签衍生出全部发布标签核心函数retag见 tag_and_push_browser_images.sh以{NAMESPACE}/{image}:{TAG_VERSION}即selenium/node-chrome:4.35.0-20250909为源镜像为每个目标标签执行默认路径docker tag本地打标签当PUSH_IMAGEtrue时追加docker push发布升级路径当环境变量PROMOTE_TAGStrue时改用docker buildx imagetools create直接在 registry 之间复制多架构 manifest 索引从而避免本地docker pull只能带回单架构镜像、导致浏览器标签退化为单架构的问题同时若设置了PROMOTE_GHCR_NAMESPACE还会在同一调用中把标签同步镜像到 GHCR脚本头部注释详细说明了这一设计背景。4.3 其他浏览器分支的对称设计同样的流程在chromium、edge、firefox分支中对称存在见 tag_and_push_browser_images.sh仅探测命令与标签段名称不同如edgedriver、geckodriver。chrome-for-testing分支L238-L280则针对 Chrome for Testing 版本输出格式不同google-chrome --version取$5做了适配。这也解释了为什么 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五个子目标。五、版本对齐的底层保障Chrome 与 ChromeDriver 1:1 匹配发布记录里 Chrome 与 ChromeDriver 均为131.0.6778.264这并非巧合而是镜像构建时按浏览器版本驱动化安装策略的结果。在 NodeChrome/Dockerfile 中CHROME_VERSION构建参数默认google-chrome-stable由 install-chrome.sh 通过 apt 仓库安装 stable/beta/unstable 通道并支持google-chrome-stable121.0.6167.120-1这类精确版本格式CFT_VERSION默认STABLE配合INSTALL_CFTtrue走 install-chrome-for-testing.sh可从LATEST_RELEASE_{CHANNEL}接口解析渠道对应版本号后下载安装 Chrome for TestingChromeDriver 安装脚本 install-chromedriver.sh 在未显式指定CHROME_DRIVER_VERSION时会先从google-chrome --version解析出 Chrome 主版本号再通过 resolve-chromedriver-source.sh 决定驱动来源Chrome 131 这类现代版本走 Chrome for Testing 的 ChromeDriver 分发通道从而保证驱动与浏览器主版本严格对齐——这正是标签中131.0.6778.264-chromedriver-131.0.6778.264能够成立的构建期前提。六、发布记录的归档语义与跨版本对照本次记录位于CHANGELOG/archived/4.35.0/归档目录RELEASE_OLD_VERSIONtrue正是归档发布的标志只打带构建日期的 6 类标签不追加不带日期的浮动标签避免与更新版本如 4.48.0的镜像产生歧义。作为对照当前版本发布记录 展示了同一 Chrome 131 版本线在新发布流程中以chrome-for-testing浏览器类型、selenium/node-chrome-for-testing/selenium/standalone-chrome-for-testing镜像呈现的标签形态——浏览器类型演进后标签命名段与版本探测命令awk {print $5}同步变化但版本探测 → 组装标签 → 双镜像分发的主干流程保持一致。七、实战如何拉取与使用这些标签基于发布记录中的标签开发者可以精确消费对应镜像。例如拉取完整网格版本docker pull selenium/node-chrome:131.0.6778.264-chromedriver-131.0.6778.264-grid-4.35.0-20250909或按大版本线选择易记标签docker run -d -p 4444:4444 --shm-size2g --name chrome131 \ selenium/standalone-chrome:131.0-20250909随后即可通过http://localhost:4444/wd/hub接入 Selenium Grid 执行自动化用例。在 docker-compose 编排中同样可以直接引用selenium/node-chrome:131.0-20250909从而把浏览器版本、驱动版本与网格版本同时固化保证测试环境的可复现性。若需自行复现发布流程可在本地构建好node-chrome:4.35.0-20250909后执行./tag_and_push_browser_images.sh 4.35.0 20250909 selenium false chrome true八、小结以 Chrome 131 归档发布记录为样本可以看到docker-selenium 的浏览器镜像发布是一个高度脚本化、版本自证的过程版本号来自容器内二进制实测标签按完整/短版本 × 网格/构建日期正交组合RELEASE_OLD_VERSION控制浮动标签的增删retag统一处理本地打标、推送与 registry 间索引复制Chrome/ChromeDriver 则在构建期完成 1:1 对齐。读懂这条流水线就等于掌握了整个项目浏览器镜像版本矩阵的生成原理。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 浏览器镜像标签体系与 tag_and_push_browser_images.sh 全解析以 Chrome 115 发布记录为例docker selenium 浏览器镜像标签体系与 tag_and_push_browser_images.sh 全解析以 Chrome 115 发布记录为测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系解析以 Selenium Grid 4.34.0 Chrome 95 发布记录为例docker selenium 浏览器镜像标签体系解析以 Selenium Grid 4.34.0 Chrome 95 发布记录为例 本篇技术指南围绕 d测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系解析以 Selenium Grid 4.32.0 Chrome 124 发布记录为例docker selenium 浏览器镜像标签体系解析以 Selenium Grid 4.32.0 Chrome 124 发布记录为例 本篇技术指南以 d测试后端云原生容器编排可观测性上一篇WatchYourLAN常见问题FAQ从部署到功能故障排除下一篇llmware故障恢复高可用性与灾难备份的方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表