ARTICLE DETAIL

资讯详情

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

Selenium Grid 4.48.0 发布记录解析:Chrome for Testing 129.0.6668.100 镜像标签生成全流程

Selenium Grid 4.48.0 发布记录解析:Chrome for Testing 129.0.6668.100 镜像标签生成全流程 测试后端云原生容器编排可观测性【免费下载链接】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/4.48.0/chrome-for-testing_129.md 为核心拆解 docker-selenium 项目在发布 Selenium Grid 4.48.0 时如何为 Chrome for TestingCfT129.0.6668.100 与配套 ChromeDriver 129.0.6668.100 批量生成并打上 Node、Standalone 两套镜像标签。读完本文你将理解该变更记录的每行输出从何而来、tag_and_push_browser_images.sh脚本的每个参数如何影响结果、6 类标签命名的语义以及如何精确拉取这个版本的镜像投入自动化测试。一、这份变更记录在说什么chrome-for-testing_129.md是一份发布打标签日志完整记录了 Selenium Grid 4.48.0 发布中浏览器分支chrome-for-testing的镜像标签生成过程。原文核心内容如下./tag_and_push_browser_images.sh 4.48.0 20260909 selenium false chrome-for-testing true Tagging images for browser chrome-for-testing, version 4.48.0, build date 20260909, namespace selenium Selenium Grid version - 4.48.0-20260909 Chrome for Testing version - 129.0.6668.100 Short Chrome for Testing version - 129.0 ChromeDriver version - 129.0.6668.100 Short ChromeDriver version - 129.0 Tagged selenium/node-chrome-for-testing:129.0.6668.100-chromedriver-129.0.6668.100-grid-4.48.0-20260909 Tagged selenium/standalone-chrome-for-testing:129.0.6668.100-chromedriver-129.0.6668.100-grid-4.48.0-20260909 Tagged selenium/node-chrome-for-testing:129.0.6668.100-chromedriver-129.0.6668.100-20260909 Tagged selenium/standalone-chrome-for-testing:129.0.6668.100-chromedriver-129.0.6668.100-20260909 Tagged selenium/node-chrome-for-testing:129.0.6668.100-20260909 Tagged selenium/standalone-chrome-for-testing:129.0.6668.100-20260909 Tagged selenium/node-chrome-for-testing:129.0-chromedriver-129.0-grid-4.48.0-20260909 Tagged selenium/standalone-chrome-for-testing:129.0-chromedriver-129.0-grid-4.48.0-20260909 Tagged selenium/node-chrome-for-testing:129.0-chromedriver-129.0-20260909 Tagged selenium/standalone-chrome-for-testing:129.0-chromedriver-129.0-20260909 Tagged selenium/node-chrome-for-testing:129.0-20260909 Tagged selenium/standalone-chrome-for-testing:129.0-20260909从中可以提炼出本次发布的版本组合事实组件版本Selenium Grid4.48.0-20260909Chrome for Testing129.0.6668.100短版本CfT129.0ChromeDriver129.0.6668.100短版本ChromeDriver129.0发布构建日期20260909镜像命名空间selenium值得注意的是CfT 与 ChromeDriver 的完整版本号完全一致129.0.6668.100。这不是巧合而是 Chrome for Testing 的设计使然官方以同一源码修订版本同时发布 CfT 浏览器和对应 ChromeDriver因此本镜像内浏览器与驱动始终是已知良配。这份记录在整个 CHANGELOG 中还有更宏观的定位CHANGELOG/README.md的 Chrome For Testing 版本矩阵里Grid 4.48.0 行的 129 列即指向本文件矩阵按浏览器版本从新到旧排列方便用户按 Grid 版本 × 浏览器版本反查镜像标签。二、打标签命令逐参数解读变更记录第一行就是脚本调用./tag_and_push_browser_images.sh 4.48.0 20260909 selenium false chrome-for-testing true对照 tag_and_push_browser_images.sh 开头的参数声明第 1-14 行7 个位置参数的语义如下位置参数本次取值含义1VERSION4.48.0Selenium Grid 版本号2BUILD_DATE20260909发布构建日期YYYYMMDD3NAMESPACEselenium镜像仓库命名空间4PUSH_IMAGEfalse是否在打标签后执行docker push默认false5BROWSERchrome-for-testing浏览器分支决定走哪个 case 分支6RELEASE_OLD_VERSIONtrue是否为旧版本补发标签默认false7PLATFORM未传默认探测版本时使用的构建平台默认linux/amd64脚本内部先拼接TAG_VERSION${VERSION}-${BUILD_DATE}即输出中的4.48.0-20260909该值将作为源镜像标签用于docker run探测浏览器版本以及docker tag的源引用详见 tag_and_push_browser_images.sh。本次调用中PUSH_IMAGEfalse表示只在本地产出标签、不上传发布流水线通常会另择时机推送RELEASE_OLD_VERSIONtrue则直接决定了最终只有 6 类标签见下一节这也解释了为什么变更记录里恰好是node与standalone各 6 行、共 12 行Tagged输出。三、chrome-for-testing 分支的打标签流程脚本通过case ${BROWSER}分发到chrome-for-testing分支见 tag_and_push_browser_images.sh。整个流程分三步1. 从已构建镜像中探测真实版本号CHROME_VERSION$(docker run --platform ${PLATFORM} --rm ${NAMESPACE}/node-chrome-for-testing:${TAG_VERSION} google-chrome --version | awk {print $5}) CHROMEDRIVER_VERSION$(docker run --platform ${PLATFORM} --rm ${NAMESPACE}/node-chrome-for-testing:${TAG_VERSION} chromedriver --version | awk {print $2})脚本以selenium/node-chrome-for-testing:4.48.0-20260909为源镜像启动临时容器执行google-chrome --version与chromedriver --version再用awk截取版本号字段。CfT 的版本输出形如Google Chrome for Testing 129.0.6668.100 ...因此取第 5 个字段ChromeDriver 输出形如ChromeDriver 129.0.6668.100 ...取第 2 个字段。与普通 Chrome 分支取第 3 个字段的区别正来源于此标签版本号永远以镜像内真实二进制为准而不是硬编码。2. 生成短版本号function short_version() { local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }short_version函数tag_and_push_browser_images.sh把129.0.6668.100按.切分后取前两段得到129.0用于生成短标签系列。3. 生成 6 类标签并批量打标因为RELEASE_OLD_VERSIONtrueCHROME_TAGS数组只包含 6 个条目脚本 第 250-262 行随后对每个标签分别调用retag node-chrome-for-testing与retag standalone-chrome-for-testing标签模式示例本次发布语义CfT版本-chromedriver-驱动版本-grid-Grid版本-日期129.0.6668.100-chromedriver-129.0.6668.100-grid-4.48.0-20260909浏览器 驱动 Grid 全版本锚定CfT版本-chromedriver-驱动版本-日期129.0.6668.100-chromedriver-129.0.6668.100-20260909浏览器 驱动 构建日期CfT版本-日期129.0.6668.100-20260909浏览器 构建日期短CfT版本-chromedriver-短驱动版本-grid-Grid版本-日期129.0-chromedriver-129.0-grid-4.48.0-20260909短版本组合同上三种语义的简化短CfT版本-chromedriver-短驱动版本-日期129.0-chromedriver-129.0-20260909短版本 日期短CfT版本-日期129.0-20260909短版本 日期为什么没有出现selenium/node-chrome-for-testing:129这种裸版本标签关键在于RELEASE_OLD_VERSIONtrue脚本在RELEASE_OLD_VERSIONfalse时才会追加版本-chromedriver-驱动版本、版本、短版本-chromedriver-短驱动版本、短版本这 4 类不携带日期/Grid 信息的可浮动标签第 263-274 行。由于本次是旧版本补发场景为避免这些标签被无意覆盖或误导脚本刻意不生成它们——这与变更记录中恰好 12 行输出完全吻合。四、retag()本地打标、推送与多架构 PROMOTE 路径每个标签最终都通过retag()函数落地tag_and_push_browser_images.sh。其默认路径为docker tag selenium/镜像名:4.48.0-20260909 selenium/镜像名:目标标签 echo Tagged ... if [ ${PUSH_IMAGE} true ]; then docker push selenium/镜像名:目标标签 fi即把源镜像...:4.48.0-20260909打上全部 6 类别名标签只有PUSH_IMAGEtrue时才逐个推送。变更记录中所有行均为Tagged ...且第 4 个参数为false对应仅本地打标的发布阶段。脚本还预留了两条发布增强路径从源码注释与PROMOTE_*环境变量可见第 10-13 行PROMOTE_TAGStrue源镜像来自远端注册表、从未在本地构建过。此时docker tag无法表达跨架构复制本地docker pull只能带回运行器所在架构脚本改用docker buildx imagetools create在镜像索引index层面、注册表对注册表直接创建标签保证多架构标签一致PROMOTE_GHCR_NAMESPACE非空时在同一次调用中把标签同时镜像到 GHCR 命名空间弥补Makefile中依赖本地docker images的 GHCR 镜像流程在本地为空场景下的失效。五、Chrome for Testing 与已知良配的 ChromeDriver理解这套标签体系还需要知道 CfT 镜像的构建来源。CfT 是 Chrome 团队专为自动化发布的浏览器构建与普通 Chrome 相比不自动更新、不携带消费端组件因此非常适合钉死在某个版本的测试场景。在 NodeChrome/Dockerfile 中镜像通过构建参数控制是否走 CfT 路线ARG CFT_VERSIONSTABLE ARG INSTALL_CFTfalse RUN ... if [ ${INSTALL_CFT} true ]; then \ CFT_VERSION${CFT_VERSION} /opt/bin/install-chrome-for-testing.sh; \ else \ /opt/bin/install-chrome.sh; \ fiINSTALL_CFTtrue时执行 NodeChrome/install-chrome-for-testing.sh。该脚本的关键逻辑包括CFT_VERSION支持STABLE | BETA | DEV | CANARY通道名脚本通过LATEST_RELEASE_${CHANNEL}接口解析为具体版本号第 22-27 行129 发布对应的自然是STABLE通道解析结果从https://storage.googleapis.com/chrome-for-testing-public/${CFT_VERSION}/linux64/chrome-linux64.zip下载解压安装到/opt/chrome并软链/usr/bin/google-chrome第 36-59 行依赖解析有两种路径优先读取 Chrome 包内自带的deb.deps清单处理版本约束、|备选包、libasound2→libasound2t64兼容替换缺失时回退到脚本内置的完整依赖列表第 62-86 行。此外Dockerfile 还通过google-chrome --version | awk {print $5}把版本写入/opt/selenium/browsers/chrome/versionCfT 分支取第 5 个字段与打标签脚本的探测逻辑一致Node 向 Grid 注册的能力为browserNamechrome——这意味着使用普通 chrome 能力编写的现有测试无需任何改动即可切换到 CfT 镜像。平台限制CfT 官方仅发布linux64构建因此node-chrome-for-testing与standalone-chrome-for-testing只提供linux/amd64架构ARM64 环境应改用selenium/node-chrome或selenium/node-chromium见 docs/docker-hub/node-chrome-for-testing.md。六、用 129 标签跑起来Node 与 Standalone基于本次发布可以直接使用记录中的 129 系列标签。以下命令参考 docs/docker-hub/node-chrome-for-testing.md 与 docs/docker-hub/standalone-chrome-for-testing.md文档示例为4.48.0-20260905标签本文按变更记录统一使用4.48.0-20260909实际使用以你在 Docker Hub 查到的当日发布标签为准。Node Hub 模式docker network create grid docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4.48.0-20260909 docker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub \ --platform linux/amd64 \ --shm-size2g \ selenium/node-chrome-for-testing:129.0-20260909Standalone 模式docker run -d -p 4444:4444 -p 7900:7900 --platform linux/amd64 --shm-size2g \ selenium/standalone-chrome-for-testing:129.0-20260909运行要点含浏览器的镜像务必使用--shm-size2g否则 Chrome 会因默认 64 MB 的/dev/shm而崩溃启动后把 WebDriver 测试指向http://localhost:4444可选浏览器访问http://localhost:7900/?autoconnect1resizescalepasswordsecret查看容器内会话画面noVNC默认密码secretCfT 的 Beta、Dev、Canary 通道也发布为:beta、:dev、:canary标签测试结束清理网络docker network rm grid。七、如何选择正确的标签官方推荐钉死完整标签以复现确定性环境。标签结构可概括为docs/docker-hub/node-chrome-for-testing.mdselenium/node-chrome-for-testing-Major.Minor.Patch-YYYYMMDD # Grid 版本 日期 selenium/node-chrome-for-testing-browserVersion-browserDriverVersion-Major.Minor.Patch-YYYYMMDD # 全版本锚定其余组合短浏览器版本、带 chromedriver 段、带 grid 段等都是上述两种的排列展开。结合本次 129 记录实际可用的定位策略包括需求推荐标签精确复现本次发布selenium/node-chrome-for-testing:129.0.6668.100-chromedriver-129.0.6668.100-grid-4.48.0-20260909锁定浏览器大版本与日期selenium/node-chrome-for-testing:129.0-20260909关注主版本流selenium/node-chrome-for-testing:129普通发布时提供需要留意因本次RELEASE_OLD_VERSIONtrue129 记录中没有生成:129这类可浮动标签这类标签只在RELEASE_OLD_VERSIONfalse的常规发布中追加。八、小结这份chrome-for-testing_129.md变更记录虽然只是一段打标签日志背后却完整映射了 docker-selenium 的发布机制以已构建镜像内真实二进制版本为唯一事实源 → 短版本派生 → 按 RELEASE_OLD_VERSION 决定标签集合 → retag 本地打标/推送或 imagetools 多架构复制。理解这条链路后你既能读懂任何一份浏览器变更记录128、130、131……结构完全一致也能在需要精确固定 Chrome for Testing 129.0.6668.100 时直接从 6 类标签中选择最合适的镜像投入 Selenium Grid 测试。相关仓库参考tag_and_push_browser_images.sh | NodeChrome/Dockerfile | NodeChrome/install-chrome-for-testing.sh | CHANGELOG/README.md | docs/docker-hub/node-chrome-for-testing.md | docs/docker-hub/standalone-chrome-for-testing.md赞分享测试后端云原生容器编排可观测性【免费下载链接】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点击查看免费下载相关推荐CUDA 矩阵乘法实战解析cuda-samples 中 matrixMul 示例的共享内存分块内核与 Runtime API 详解CUDA 矩阵乘法实战解析cuda samples 中 matrixMul 示例的共享内存分块内核与 Runtime API 详解 matrixMul 是 c测试后端云原生容器编排可观测性在 LifeOS 中构建个人税务数据层TAXES.md 文件结构与 Pulse 消费机制解析在 LifeOS 中构建个人税务数据层TAXES.md 文件结构与 Pulse 消费机制解析 本篇技术指南围绕 LifeOS 财务模块中的核心数据文件 TAX测试后端云原生容器编排可观测性docker-selenium 4.48.0 发布记录解读Chrome for Testing 128.0.6613.137 镜像标签体系与构建链路docker selenium 4.48.0 发布记录解读Chrome for Testing 128.0.6613.137 镜像标签体系与构建链路 本篇技术测试后端云原生容器编排可观测性上一篇小智 ESP32 服务器阿里云短信验证码接入全指南签名、模版、RAM 授权与手机号注册配置下一篇零门槛免费AI换脸工具 roop-unleashed3分钟完成你的第一次换脸创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表