docker-selenium 发布实战:Edge 122 镜像的 tag 约定与自动化打标签流程(Grid 4.28.1)

发布时间:2026/10/5 1:42:14

docker-selenium 发布实战:Edge 122 镜像的 tag 约定与自动化打标签流程(Grid 4.28.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 仓库中 Selenium Grid4.28.1发布 Edge122.0.2365.92浏览器镜像的真实打标签记录为样本完整解析tag_and_push_browser_images.sh脚本的参数语义、tag 命名约定、底层实现docker tag / buildx imagetools以及 Edge 镜像的构建来源NodeEdge/Dockerfile帮助读者理解一个浏览器镜像为什么会有十几个 tag、它们各自代表什么这一核心问题。读完本文你将能独立阅读任一版本的 CHANGELOG 发布记录并准确选择适合自己测试场景的镜像 tag。发布记录原文一次完整的 Edge 镜像打标签过程在仓库归档目录 CHANGELOG/archived/4.28.1/edge_122.md 中保存了本次发布实际执行命令的完整输出。命令本身位于仓库根目录./tag_and_push_browser_images.sh 4.28.1 20250202 selenium false edge true其完整输出如下Tagging images for browser edge, version 4.28.1, build date 20250202, namespace selenium Selenium Grid version - 4.28.1-20250202 Edge version - 122.0.2365.92 Short Edge version - 122.0 EdgeDriver version - 122.0.2365.92 Short EdgeDriver version - 122.0 Tagged selenium/node-edge:122.0.2365.92-edgedriver-122.0.2365.92-grid-4.28.1-20250202 Tagged selenium/standalone-edge:122.0.2365.92-edgedriver-122.0.2365.92-grid-4.28.1-20250202 Tagged selenium/node-edge:122.0.2365.92-edgedriver-122.0.2365.92-20250202 Tagged selenium/standalone-edge:122.0.2365.92-edgedriver-122.0.2365.92-20250202 Tagged selenium/node-edge:122.0.2365.92-20250202 Tagged selenium/standalone-edge:122.0.2365.92-20250202 Tagged selenium/node-edge:122.0-edgedriver-122.0-grid-4.28.1-20250202 Tagged selenium/standalone-edge:122.0-edgedriver-122.0-grid-4.28.1-20250202 Tagged selenium/node-edge:122.0-edgedriver-122.0-20250202 Tagged selenium/standalone-edge:122.0-edgedriver-122.0-20250202 Tagged selenium/node-edge:122.0-20250202 Tagged selenium/standalone-edge:122.0-20250202 Tagged selenium/node-edge:122.0.2365.92-edgedriver-122.0.2365.92 Tagged selenium/standalone-edge:122.0.2365.92-edgedriver-122.0.2365.92 Tagged selenium/node-edge:122.0.2365.92 Tagged selenium/standalone-edge:122.0.2365.92 Tagged selenium/node-edge:122.0-edgedriver-122.0 Tagged selenium/standalone-edge:122.0-edgedriver-122.0 Tagged selenium/node-edge:122.0 Tagged selenium/standalone-edge:122.0这份记录不仅是某天发布了 Edge 122更揭示了整个浏览器镜像发布管线的核心机制同一条基础镜像被同时打上 node 与 standalone 两套 tag且每套覆盖从全量版本号到主次版本号的多个维度。命令参数逐项解读tag_and_push_browser_images.sh的位置在 仓库根目录其位置参数定义如下位置本次取值脚本变量含义$14.28.1VERSIONSelenium Grid 版本号$220250202BUILD_DATE构建/发布日期YYYYMMDD$3seleniumNAMESPACE镜像命名空间默认取自NAME环境变量$4falsePUSH_IMAGE是否在打标签后执行docker push$5edgeBROWSER浏览器类型chrome / chromium / chrome-for-testing / edge / firefox$6trueRELEASE_OLD_VERSION是否同时为旧版本打 tag见下文两个由环境变量控制的行为开关也需要关注PROMOTE_TAGS默认false置为true时表示本次发布不是重新构建镜像而是直接引用测试阶段已发布的镜像清单由deploy.yml在发布流程中设置此时改用docker buildx imagetools create在 registry 之间复制 manifest详见 retag 机制。PROMOTE_GHCR_NAMESPACE与PROMOTE_TAGStrue配合可在同一次调用中把 tag 镜像同步到 GHCR 命名空间。在 Makefile 中对应的 make 目标tag_and_push_edge_images只是把变量透传给脚本tag_and_push_edge_images: ./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) edge $(RELEASE_OLD_VERSION)而 Makefile 的聚合目标tag_and_push_browser_images会依次调用 chrome、chrome-for-testing、chromium、firefox、edge 五个浏览器目标从而在一次发布会中为所有浏览器统一打标签。版本号探测发布记录中的四个关键值脚本执行的第一步是运行已经构建好的node-edge容器从容器内部探测浏览器与驱动的精确版本再据此生成 tag。发布记录中打印的四个值分别来自两条命令EDGE_VERSION$(docker run --rm ${NAMESPACE}/node-edge:${TAG_VERSION} microsoft-edge --version | awk {print $3}) EDGEDRIVER_VERSION$(docker run --rm ${NAMESPACE}/node-edge:${TAG_VERSION} msedgedriver --version | awk {print $4})Edge version - 122.0.2365.92由microsoft-edge --version输出的第 3 个字段得到EdgeDriver version - 122.0.2365.92由msedgedriver --version输出的第 4 个字段得到。随后short_version()函数以.为分隔符截取前两段脚本 L53-L57function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }于是得到Short Edge version - 122.0与Short EdgeDriver version - 122.0。长版本号122.0.2365.92保证精确可复现短版本号122.0则方便用户锁定到某个大版本、跟随其最新小版本。基础镜像 tag 本身由前两个参数拼接而成脚本 L15TAG_VERSION${VERSION}-${BUILD_DATE}即本次输出中反复出现的4.28.1-20250202对应selenium/node-edge:4.28.1-20250202这一发布基线。tag 命名约定从发布记录反推规则发布记录里出现的 10 个node-edgetag 可以按特征分为两组每组 5 个standalone-edge完全对称。第一组带发布日期的 tag前 6 个即 EDGE_TAGS 数组主体tag 形态含义122.0.2365.92-edgedriver-122.0.2365.92-grid-4.28.1-20250202浏览器全版本 驱动全版本 Grid 版本 日期信息最完整122.0.2365.92-edgedriver-122.0.2365.92-20250202浏览器全版本 驱动全版本 日期122.0.2365.92-20250202浏览器全版本 日期122.0-edgedriver-122.0-grid-4.28.1-20250202短版本形态的全信息tag122.0-edgedriver-122.0-20250202短版本 日期122.0-20250202短版本 日期最简洁的发布 tag第二组不带日期的 tag后 4 个由RELEASE_OLD_VERSIONfalse分支追加tag 形态含义122.0.2365.92-edgedriver-122.0.2365.92浏览器全版本 驱动全版本122.0.2365.92浏览器全版本122.0-edgedriver-122.0短版本 短驱动版本122.0短版本第二组 tag 之所以由RELEASE_OLD_VERSION控制脚本注释给出了明确意图L176-L187当发布历史遗留版本例如为兼容性重新发布旧 Grid 版本时不应让这些 tag 覆盖最新版本的同名 tag因此只在RELEASE_OLD_VERSIONfalse即正常发布新版本时追加。发布记录中RELEASE_OLD_VERSIONtrue所以完整输出里只出现了第一组的 6 个 tag 与第二组的 4 个 tag——两者合计正是 EDGE_TAGS 数组的全部内容L163-L175 的 6 个加上 L176-L187 的 4 个。双镜像并行node 与 standalone 一次完成对每个生成的 tag脚本会同时为 Node 与 Standalone 两种镜像形态打标签L189-L192for edge_tag in ${EDGE_TAGS[]}; do retag node-edge ${edge_tag} retag standalone-edge ${edge_tag} doneselenium/node-edge作为 Node 挂接在 Selenium Grid Hub/Router 下的浏览器节点镜像selenium/standalone-edge独立运行、自身即包含完整 Grid 组件的单机镜像由 Standalone/Dockerfile 以BASEnode-edge为基础构建见 Makefile L774。同一版本号同时在两种形态下可用让用户既可以在大规模 Grid 集群中横向扩展节点也可以单容器快速起一个完整测试环境无需额外换算 tag。retag 机制与 PROMOTE_TAGS 发布路径retag()函数脚本 L31-L51)是打标签动作的统一出口其行为取决于PROMOTE_TAGSfunction retag() { local __image$1 local __tag$2 local __source${NAMESPACE}/${__image}:${TAG_VERSION} if [ ${PROMOTE_TAGS} true ]; then docker buildx imagetools create ... ${__source} else docker tag ${__source} ${NAMESPACE}/${__image}:${__tag} if [ ${PUSH_IMAGE} true ]; then docker push ${NAMESPACE}/${__image}:${__tag} fi fi }两种路径各有适用场景常规路径PROMOTE_TAGSfalsedocker tag在本地为镜像打标签若PUSH_IMAGEtrue则逐个docker push。脚本头部的注释说明PROMOTE_TAGStrue的意义在于当docker pull只会带回运行者所在架构的镜像时docker tag无法保留多架构 manifest而buildx imagetools直接操作 registry 上的镜像索引可保证浏览器 tag 与发布 tag 一样是多架构的。本次发布的PUSH_IMAGEfalse即只完成打标签、推送交给后续发布流程统一处理。镜像同步路径PROMOTE_GHCR_NAMESPACE非空时retag会在同一调用内额外为 GHCR 命名空间创建同样的 tagMakefile 的tag_and_push_browser_images_ghcr目标则提供了一种独立于脚本的批量镜像同步方案遍历docker images中的 tag 逐一向 GHCR 复制。底层构建来源Edge 镜像里到底装了什么tag 上的122.0.2365.92最终要能落到容器内部依赖 NodeEdge/Dockerfile 的构建逻辑浏览器安装ARG EDGE_VERSIONmicrosoft-edge-stable默认从 Microsoft 官方 apt 源安装 stable 渠道当传入形如microsoft-edge-stable122.0.2365.92的版本化参数时会切换到按版本归档站点下载对应.deb并--allow-downgrades安装以规避官方源对旧版本的清理Dockerfile L16-L34。驱动安装与版本对齐EDGE_DRIVER_VERSION未显式指定时先通过msedgedriver.microsoft.com/LATEST_RELEASE_major_LINUX解析该大版本对应的最新驱动若该指针已被清理则回退使用与浏览器完全相同的版本号Dockerfile L51-L68。这就解释了发布记录中 Edge 与 EdgeDriver 版本号一致同为 122.0.2365.92的现象——122 大版本解析失败时回退到了浏览器精确版本。启动包装wrap_edge_binary 会把/usr/bin/microsoft-edge替换为包装脚本统一处理--no-sandbox、--lang*到LANGUAGE环境变量的转换并收集SE_BROWSER_ARGS_*前缀环境变量注入启动参数。浏览器元数据构建期写入/opt/selenium/browsers/edge/{name,version,binary_location}其中binary_location记录了ms:edgeOptions.binary的默认二进制路径可通过SE_BROWSER_BINARY_LOCATION覆盖供 Selenium Manager 与 Grid 节点发现浏览器Dockerfile L82-L85。此外节点内还通过 edge-cleanup.conf 挂载由 supervisord 管理的 edge-cleanup.sh 清理守护进程按SE_BROWSER_LEFTOVERS_PROCESSES_SECS、SE_BROWSER_LEFTOVERS_TEMPFILES_DAYS、SE_BROWSER_LEFTOVERS_INTERVAL_SECS三个环境变量定期清理残留 Edge 进程与/tmp临时文件防止长期运行的 Grid 节点资源泄漏。如何使用这些 tag以 4.28.1 Edge 122 为例发布记录中出现的 tag 都可以直接用于docker pull/docker run。基于 docs/docker-hub/node-edge.md 的实操步骤一个典型的 Hub Node 组合如下# 1. 创建网络 docker network create grid # 2. 启动 Hub docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4.28.1-20250202 # 3. 启动 Edge 节点推荐显式指定全版本 tag 以精确复现 docker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-edge:122.0.2365.92-edgedriver-122.0.2365.92-grid-4.28.1-20250202 # 4. 将 WebDriver 测试指向 http://localhost:4444 # 5. 可选通过 noVNC 观察容器内情况 # http://localhost:7900/?autoconnect1resizescalepasswordsecret # 6. 测试完成后清理 docker network rm grid注意事项运行包含浏览器的镜像时务必加--shm-size2g使用宿主共享内存避免浏览器渲染进程崩溃单机场景可直接使用selenium/standalone-edge:tag无需 Hub如果只是希望锁定 Edge 122 大版本、跟随其后来的补丁发布可以拉取短版本 tagselenium/node-edge:122.0如果需要完全复现某次 CI 现场则应选择带grid-与日期的全量 tag对应 docs/docker-hub/node-edge.md 中描述的 Tagging Conventions 结构browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD及其各层排列组合。发布记录在矩阵中的位置每一条类似 edge_122.md 的记录都是 CHANGELOG/README.md 中Grid 版本 × 浏览器版本矩阵的一个单元格矩阵中4.28.1行的 Edge 列覆盖 114~132 各版本本次记录的edge_122即其中之一。该矩阵的用途是让用户在需要较新的 Grid 核心 特定旧浏览器版本组合时能快速找到对应的发布说明与可用 tagREADME 同时明确提醒项目并未对每一种 Grid × 浏览器组合做全量回归测试用户应根据自身测试需求评估选择。因此当你在仓库里看到某个edge_122.md这类归档文件时它既是那天发布命令的真实输出日志也是该版本组合的 tag 速查表命令中的每个参数、输出中的每个 tag都可以对照本文的规则逐行解读并直接用于生产环境的镜像选择。延伸阅读tag_and_push_browser_images.sh本文核心脚本的完整实现含 chrome、chromium、firefox、chrome-for-testing 分支Makefileedge_upgrade_version目标展示如何从零构建 Edge 镜像并验证版本CHANGELOG/README.mdSelenium Grid × 浏览器版本矩阵与归档索引NodeEdge/DockerfileEdge 浏览器与 msedgedriver 的安装细节docs/docker-hub/node-edge.mdnode-edge 镜像的完整使用指南与 tag 结构说明赞分享测试后端云原生容器编排可观测性【免费下载链接】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 98 与 Selenium Grid 4.28.1 的标签约定docker selenium 镜像标签发布全解析从 tag_and_push_browser_images.sh 看 Chrome 98 与 Seleniu测试后端云原生容器编排可观测性docker-selenium 浏览器镜像版本矩阵与标签约定以 Chrome 131 与 Selenium Grid 4.28.1 发布为例docker selenium 浏览器镜像版本矩阵与标签约定以 Chrome 131 与 Selenium Grid 4.28.1 发布为例 本文以 CHAN测试后端云原生容器编排可观测性docker-selenium 4.48.0 发布 Edge 144 镜像tag_and_push_browser_images.sh 打标签与发布流程解析docker selenium 4.48.0 发布 Edge 144 镜像tag_and_push_browser_images.sh 打标签与发布流程解析测试后端云原生容器编排可观测性上一篇mcrcon高级配置环境变量与自动化脚本的终极指南下一篇如何高效解决REFramework在《怪物猎人荒野》中的启动崩溃问题创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/5 1:37:13

MRAM工业存储实战:MR25H40CDF与STM32G431RB驱动开发与掉电保护

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 2:37:15

DeepSeek教学反思方案:课堂实录清洗、标注与行为模式挖掘实战

简介:面向教学反思数字化转型需求,这份535页的方案文档以DeepSeek-NLP为技术底座,围绕课堂实录文本自动标注与教学行为模式挖掘展开,适合教育研究者、一线教师、教研人员及NLP应用开发者参考。文档为单个PDF文件,压缩包…

2026/10/5 2:37:15

三甲医院知识库DeepSeek微调与内网部署实战:从文档解析到RAG问答

简介:这份PDF文档面向医疗信息化从业者、AI应用开发者及希望将大模型落地医疗场景的技术人员,系统讲解基于DeepSeek构建三甲医院知识库问答系统的完整实战路径。内容从医疗问答系统的背景意义切入,梳理三甲医院知识库的数据来源与特点&#x…

2026/10/5 2:37:15

YOLOv11边缘部署实战:量化压缩与NPU加速全链路解析

简介:围绕YOLOv11在边缘计算场景中的高效部署需求,这份32页PDF手册系统讲解模型量化压缩与NPU加速的完整技术链路,面向算法工程师、边缘计算开发者及计算机视觉学习者。内容按章节组织,从边缘计算与YOLOv11概述入手,分…

2026/10/5 2:37:15

175种ChatGPT指令模板拆解:提示工程师的工程化实践指南

简介:这份资源是面向AI提示词工程师、内容创作者与对话产品开发者的实战指令合集,围绕ChatGPT等大模型的内容生成能力,整理出175种可直接套用的训练指令模板,帮助使用者解决提示词设计零散、输出质量不稳定、场景覆盖不全等问题。…

2026/10/5 2:37:15

基于Java+SpringBoot+Vue的学生体质健康管理系统毕设实战与避坑指南

简介:这是一套面向高校计算机专业毕业设计的完整资料,主题为基于Java的学生体质健康管理系统,适合正在准备毕设的本科生及需要参考SSM/SpringBoot项目实战的开发者。资源包含论文与源码两部分,论文按绪论、相关技术、系统分析、系…

2026/10/4 0:01:02

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/4 0:01:02

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/4 1:01:05

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑