测试后端云原生容器编排可观测性【免费下载链接】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点击查看免费下载在 Selenium Grid 的容器化部署中镜像标签是浏览器版本 驱动版本 Grid 版本 构建日期四种信息的组合体理解其命名规律是精准锁定测试环境的必备技能。本文以 docker-selenium 仓库中CHANGELOG/archived/4.28.1/chrome_100.md这份真实发布记录为线索完整还原 Chrome 100 镜像在 Selenium Grid 4.28.1 发布批次中的全部标签集合并深入tag_and_push_browser_images.sh源码讲清每个标签的生成逻辑、参数含义与使用场景。读完本文你将能够根据需求从 12 个候选标签中准确挑选镜像也能独立复现整个打标签发布流程。发布记录原文一次打标签任务的完整输出CHANGELOG/archived/4.28.1/chrome_100.md记录了 2025 年 2 月 2 日构建日期20250202为 Chrome 100 生成镜像标签的完整命令输出这是理解整个标签体系的原始素材./tag_and_push_browser_images.sh 4.28.1 20250202 selenium false chrome true Tagging images for browser chrome, version 4.28.1, build date 20250202, namespace selenium Selenium Grid version - 4.28.1-20250202 Chrome version - 100.0.4896.127 Short Chrome version - 100.0 ChromeDriver version - 100.0.4896.60 Short ChromeDriver version - 100.0 Tagged selenium/node-chrome:100.0.4896.127-chromedriver-100.0.4896.60-grid-4.28.1-20250202 Tagged selenium/standalone-chrome:100.0.4896.127-chromedriver-100.0.4896.60-grid-4.28.1-20250202 Tagged selenium/node-chrome:100.0.4896.127-chromedriver-100.0.4896.60-20250202 Tagged selenium/standalone-chrome:100.0.4896.127-chromedriver-100.0.4896.60-20250202 Tagged selenium/node-chrome:100.0.4896.127-20250202 Tagged selenium/standalone-chrome:100.0.4896.127-20250202 Tagged selenium/node-chrome:100.0-chromedriver-100.0-grid-4.28.1-20250202 Tagged selenium/standalone-chrome:100.0-chromedriver-100.0-grid-4.28.1-20250202 Tagged selenium/node-chrome:100.0-chromedriver-100.0-20250202 Tagged selenium/standalone-chrome:100.0-chromedriver-100.0-20250202 Tagged selenium/node-chrome:100.0-20250202 Tagged selenium/standalone-chrome:100.0-20250202这份记录看似只是一段日志实际上是两个关键事实的档案版本对应关系在 Selenium Grid 4.28.1-20250202 这个发布批次中node-chrome与standalone-chrome镜像内封装的 Chrome 版本为100.0.4896.127ChromeDriver 版本为100.0.4896.60。当你的测试需要精确复现Chrome 100 环境时这就是可追溯的权威来源。标签命名规律同一镜像被打了 6 种标签每种同时作用于 node 与 standalone 两种镜像共 12 个从全版本全信息到短版本短信息层层递进。标签体系全景从最全到最简的 6 层设计对照tag_and_push_browser_images.sh中CHROME_TAGS数组的定义上面 12 个标签可以归纳为 6 类命名模式下文以 node 镜像为例序号标签模式本次实例信息完整度1浏览器全版本-chromedriver-驱动全版本-grid-Grid版本-构建日期100.0.4896.127-chromedriver-100.0.4896.60-grid-4.28.1-20250202最完整唯一确定到单次构建2浏览器全版本-chromedriver-驱动全版本-构建日期100.0.4896.127-chromedriver-100.0.4896.60-20250202浏览器 驱动 构建日期3浏览器全版本-构建日期100.0.4896.127-20250202浏览器 构建日期4浏览器短版本-chromedriver-驱动短版本-grid-Grid版本-构建日期100.0-chromedriver-100.0-grid-4.28.1-20250202短版本版的最完整标签5浏览器短版本-chromedriver-驱动短版本-构建日期100.0-chromedriver-100.0-20250202短版本的浏览器 驱动 日期6浏览器短版本-构建日期100.0-20250202短版本 构建日期其中短版本short version由脚本中的short_version函数生成逻辑是取版本号前两段function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }见 tag_and_push_browser_images.sh#L53-L57。因此100.0.4896.127变为100.0100.0.4896.60变为100.0。短标签的价值在于当你不关心 Patch 版本差异、只想锁定Chrome 100 系列时selenium/node-chrome:100.0-20250202这样的标签足够简洁且可读。版本探测标签中的数字从哪里来标签里的 Chrome 与 ChromeDriver 版本号并非人工填写而是脚本在构建后通过容器内命令实时探测得到的。以 chrome 分支为例tag_and_push_browser_images.sh#L63-L73CHROME_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})也就是说先以基础标签selenium/node-chrome:4.28.1-20250202运行容器分别执行google-chrome --version和chromedriver --version再用awk提取版本字段。探测结果直接进入本次发布的输出Chrome 100.0.4896.127、ChromeDriver 100.0.4896.60。这一设计保证了标签与镜像内容永远一致无论 Dockerfile 中的安装脚本如何解析上游版本最终标签都以容器内真实二进制为准避免了标签写 100.0 但实际装的是 99.0之类的错位。为何只打了 6 类标签RELEASE_OLD_VERSION 开关细心的读者会发现本次记录没有生成100.0.4896.127-chromedriver-100.0.4896.60、100.0.4896.127、100.0这类不含构建日期的标签。原因是脚本中这段条件逻辑tag_and_push_browser_images.sh#L88-L99if [ ${RELEASE_OLD_VERSION} false ]; then CHROME_TAGS( # Browser version and browser driver version ${CHROME_VERSION}-chromedriver-${CHROMEDRIVER_VERSION} # Browser version ${CHROME_VERSION} # Browser version and browser driver version ${CHROME_SHORT_VERSION}-chromedriver-${CHROMEDRIVER_SHORT_VERSION} # Browser version ${CHROME_SHORT_VERSION} ) fi本次调用命令为./tag_and_push_browser_images.sh 4.28.1 20250202 selenium false chrome true第 6 个位置参数RELEASE_OLD_VERSION未传脚本默认值为false见 tag_and_push_browser_images.sh#L8因此不追加这 4 类旧版本标签。此开关的设计意图是当一个浏览器版本已经很老、不再建议直接使用Chrome 100 已远超常见测试范围时避免生成会让人误以为当前推荐版本的裸版本号标签引导用户使用带构建日期的精确标签。顺带说明命令的完整参数表tag_and_push_browser_images.sh#L3-L13位置参数本次取值含义1VERSION4.28.1Selenium Grid 版本2BUILD_DATE20250202构建日期 YYYYMMDD3NAMESPACEselenium镜像命名空间4PUSH_IMAGEfalse是否docker push本次只打本地标签5BROWSERchrome浏览器类型6RELEASE_OLD_VERSION缺省 false是否追加无日期旧标签7PLATFORM缺省 linux/amd64探测版本时运行的平台打标签的执行链路retag 函数与发布集成每个标签最终通过retag函数落地tag_and_push_browser_images.sh#L31-L51其核心是docker tag ${NAMESPACE}/${__image}:${TAG_VERSION} ${NAMESPACE}/${__image}:${__tag} echo Tagged ${NAMESPACE}/${__image}:${__tag} if [ ${PUSH_IMAGE} true ]; then docker push ${NAMESPACE}/${__image}:${__tag} fi即先以TAG_VERSION如4.28.1-20250202为源镜像为每个新标签打一次docker tag若第 4 个参数为true则随后逐个docker push。脚本对每个标签同时作用于node-chrome与standalone-chrome两种镜像tag_and_push_browser_images.sh#L101-L104这就是为什么输出中每个标签成对出现。在发布流程中该脚本通过Makefile的tag_and_push_browser_images目标统一调度该目标依赖tag_and_push_chrome_images等五个子目标依次处理 chrome、chrome-for-testing、chromium、firefox、edge 五类浏览器镜像每次调用传入$(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE)与对应浏览器名。此外脚本还支持PROMOTE_TAGStrue模式此时改用docker buildx imagetools create在 registry 与 registry 之间直接复制多架构 manifest而非本地打标签——这是发布时直接复用测试过的镜像的场景tag_and_push_browser_images.sh#L31-L44。镜像侧的证据Chrome 版本如何进入容器标签所依赖的容器内 Chrome 由NodeChrome/Dockerfile构建。构建时通过ARG CHROME_VERSIONgoogle-chrome-stableNodeChrome/Dockerfile#L18控制安装渠道执行install-chrome.sh完成安装随后在镜像内写入浏览器信息目录RUN mkdir -p /opt/selenium/browsers/chrome \ echo chrome /opt/selenium/browsers/chrome/name \ if [ ${INSTALL_CFT} true ]; then \ google-chrome --version | awk {print $5} /opt/selenium/browsers/chrome/version; \ else \ google-chrome --version | awk {print $3} /opt/selenium/browsers/chrome/version; \ fi见 NodeChrome/Dockerfile#L62-L72。注意这里同样是用google-chrome --version的输出写入版本文件与打标签脚本的探测方式完全一致——两条链路共享同一事实来源保证了 changelog 记录、镜像标签与容器内/opt/selenium/browsers/chrome/version三者的版本号严格对齐。ChromeDriver 则由install-chromedriver.sh安装可通过ARG CHROME_DRIVER_VERSION指定版本NodeChrome/Dockerfile#L45-L51。使用场景如何按需挑选标签docs/docker-hub/node-chrome.md中给出了标签使用的完整约定推荐使用完整标签来固定浏览器与 Grid 版本。对照本文的发布记录可归纳出三个典型选择1. 复现精确环境回归测试 / Bug 复现docker pull selenium/node-chrome:100.0.4896.127-chromedriver-100.0.4896.60-grid-4.28.1-20250202六段式标签同时锁定浏览器、驱动、Grid 与构建日期是唯一精确到单次构建的选择。2. 锁定浏览器主版本跨构建稳定性docker pull selenium/node-chrome:100.0-20250202短版本 构建日期锁定Chrome 100 系列容忍 Patch 升级。3. 与 Hub 组成 GridHub 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-chrome:100.0.4896.127-chromedriver-100.0.4896.60-grid-4.28.1-20250202Hub 与 Node 在同一网络内通过容器名互相发现--shm-size2g是运行含浏览器镜像时的重要参数详见 docs/docker-hub/node-chrome.md。注意仓库官方明确提示并未对每一种 Grid 版本与浏览器版本的组合做全量兼容性测试见 CHANGELOG/README.md选定标签后应结合自身测试用例先行验证。归档机制为什么这份记录位于 archived 目录chrome_100.md位于CHANGELOG/archived/4.28.1/而非当前版本目录这是CHANGELOG/generate-matrix-readme.py的归档逻辑所致当出现更新的 Grid 版本时脚本会把旧版本目录整体移入archived/保持CHANGELOG/README.md中Latest Grid Version只展示最新版本。同时脚本通过扫描各版本目录下的*.md文件名匹配([\w-])_(\d)\.md自动生成版本矩阵表矩阵中每个 ✓ 都链接到对应的 changelog 文件CHANGELOG/generate-matrix-readme.py#L59-L67。这份chrome_100.md正是矩阵中4.28.1 行 × Chrome 100 列交叉点的内容载体是可检索、可追溯的版本档案。在CHANGELOG/README.md的归档矩阵中可以看到4.28.1 是 Chrome 100 可用的最后一个 Grid 版本批次此后 Chrome 100 不再出现在更新的 Grid 版本中——这从另一个侧面印证了标签中RELEASE_OLD_VERSIONfalse的设计合理性历史浏览器版本应通过归档记录精确引用而不是在最新发布中继续泛滥成无日期的裸标签。赞分享测试后端云原生容器编排可观测性【免费下载链接】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.28.1 与 Chrome 124 发布记录为例docker selenium 浏览器镜像标签体系全解析以 Selenium Grid 4.28.1 与 Chrome 124 发布记录为例 在 Seleni测试后端云原生容器编排可观测性docker-selenium 镜像标签解码以 Selenium Grid 4.28.1 Chrome 116 为例详解浏览器版本固定与发布标签生成docker selenium 镜像标签解码以 Selenium Grid 4.28.1 Chrome 116 为例详解浏览器版本固定与发布标签生成 本文测试后端云原生容器编排可观测性docker-selenium 浏览器镜像的多标签发布机制从 Chrome 111 的发布记录看 Selenium Grid 镜像版本体系docker selenium 浏览器镜像的多标签发布机制从 Chrome 111 的发布记录看 Selenium Grid 镜像版本体系 本文以 docke测试后端云原生容器编排可观测性上一篇iOS降级终极指南downr1n工具完整教程与深度解析下一篇苹果触控板Windows驱动终极指南mac-precision-touchpad让你的MacBook在Windows上重获新生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?