ARTICLE DETAIL

资讯详情

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

docker-selenium 中 Edge 镜像的标签生成与发布流程全解析:以 4.28.1 / Edge 121 为例

docker-selenium 中 Edge 镜像的标签生成与发布流程全解析:以 4.28.1 / Edge 121 为例 测试后端云原生容器编排可观测性【免费下载链接】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.28.1/edge_121.md 为主线完整还原一次 Microsoft Edge 121 镜像打标签与发布的真实执行过程并结合 tag_and_push_browser_images.sh、NodeEdge/Dockerfile 与 docs/docker-hub/node-edge.md 等仓库源码从命令如何跑到镜像怎么构建、标签如何解码、网格如何运行给出端到端的实战解读。读完本文你将能看懂 docker-selenium 浏览器镜像的整套标签命名规范掌握tag_and_push_browser_images.sh的调用方式与参数含义并能够据此在 Selenium Grid 中精准选择、运行指定版本的 Edge 节点镜像。一、关联文档速览一次真实的 Edge 121 发布记录归档文档 CHANGELOG/archived/4.28.1/edge_121.md 是一份非常典型的单浏览器单版本发布日志它完整记录了对 Selenium Grid 4.28.1、Edge 121.0.2277.98、EdgeDriver 121.0.2277.128 这一组合执行打标签命令后的全部输出./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 - 121.0.2277.98 Short Edge version - 121.0 EdgeDriver version - 121.0.2277.128 Short EdgeDriver version - 121.0 Tagged selenium/node-edge:121.0.2277.98-edgedriver-121.0.2277.128-grid-4.28.1-20250202 Tagged selenium/standalone-edge:121.0.2277.98-edgedriver-121.0.2277.128-grid-4.28.1-20250202 Tagged selenium/node-edge:121.0.2277.98-edgedriver-121.0.2277.128-20250202 Tagged selenium/standalone-edge:121.0.2277.98-edgedriver-121.0.2277.128-20250202 Tagged selenium/node-edge:121.0.2277.98-20250202 Tagged selenium/standalone-edge:121.0.2277.98-20250202 Tagged selenium/node-edge:121.0-edgedriver-121.0-grid-4.28.1-20250202 Tagged selenium/standalone-edge:121.0-edgedriver-121.0-grid-4.28.1-20250202 Tagged selenium/node-edge:121.0-edgedriver-121.0-20250202 Tagged selenium/standalone-edge:121.0-edgedriver-121.0-20250202 Tagged selenium/node-edge:121.0-20250202 Tagged selenium/standalone-edge:121.0-20250202从这段输出可以提炼出本次发布的四个关键事实发布组合Selenium Grid Server4.28.1-20250202 Edge 浏览器121.0.2277.98 EdgeDriver121.0.2277.128发布对象selenium/node-edge与selenium/standalone-edge两类镜像各获得 6 个标签命令末位参数为true表示这是一次旧版本回填/补充打标签对应脚本的RELEASE_OLD_VERSION参数具体见下文第三节架构差异Edge 与 EdgeDriver 的长版本121.0.2277.98/121.0.2277.128与短版本均为121.0被同时用于生成标签这构成了整个标签体系的两个维度。值得注意的是当前未归档的 CHANGELOG/4.48.0/edge_121.md 中同样存在 Edge 121 的记录4.48.0-20260909构建浏览器与驱动版本为121.0.2277.128说明同一浏览器主版本线可能随 Grid 版本多次发布归档目录只保留旧 Grid 版本的记录。二、脚本全貌tag_and_push_browser_images.sh的参数与执行流程发布日志中执行的命令对应仓库根目录的 tag_and_push_browser_images.sh其完整的命令行签名按位置参数为位置参数名示例值默认值作用1VERSION4.28.1无Selenium Grid 版本号2BUILD_DATE20250202无镜像构建日期YYYYMMDD3NAMESPACEselenium无镜像命名空间Registry 用户名4PUSH_IMAGEfalsefalse是否在打标签后执行docker push5BROWSERedge无浏览器类型chrome/chromium/edge/firefox/chrome-for-testing6RELEASE_OLD_VERSIONtruefalse是否为旧版本补充发布决定是否追加无构建日期的短标签7PLATFORMlinux/amd64linux/amd64查询浏览器版本时指定的运行平台仅 chrome 相关分支使用--platform脚本开头会把VERSION与BUILD_DATE拼接为TAG_VERSION${VERSION}-${BUILD_DATE}即4.28.1-20250202这一组合值贯穿后续所有标签。脚本的核心逻辑分为四步进入edge分支tag_and_push_browser_images.sh通过临时运行已构建好的节点镜像来探测实际版本号docker run --rm selenium/node-edge:4.28.1-20250202 microsoft-edge --version | awk {print $3}得到 Edge 版本121.0.2277.98docker run --rm selenium/node-edge:4.28.1-20250202 msedgedriver --version | awk {print $4}得到 EdgeDriver 版本121.0.2277.128。 这种从镜像内部读版本的方式保证了标签永远与镜像真实内容一致不会因手工填写而错位。生成短版本号short_version()函数tag_and_push_browser_images.sh按.切分版本号并取前两段例如121.0.2277.98 - 121.0、121.0.2277.128 - 121.0。组装标签数组EDGE_TAGS先放 6 个带构建日期20250202的标签若RELEASE_OLD_VERSIONfalse再追加 4 个不带构建日期的精简标签本日志因末位参数为true而未追加。循环执行retag对node-edge和standalone-edge两个镜像名逐一打标签tag_and_push_browser_images.sh。retag()函数tag_and_push_browser_images.sh是底层执行单元默认以docker tag从selenium/{image}:4.28.1-20250202创建别名标签并在PUSH_IMAGEtrue时顺带docker push当PROMOTE_TAGStrue发布流程中推广已验证镜像而非重新构建时则改用docker buildx imagetools create在 Registry 之间直接复制 manifest从而保留多架构索引而不依赖本地镜像缓存。三、标签体系解码6 组标签分别代表什么归档日志中的 12 行Tagged输出6 组 × node/standalone 两个镜像名背后是一套严格、可预测的命名规范。结合 docs/docker-hub/node-edge.md 中Tagging Conventions一节可以拆解如下第一组全版本 Grid 版本 构建日期信息最完整的标签selenium/node-edge:121.0.2277.98-edgedriver-121.0.2277.128-grid-4.28.1-20250202格式为Edge完整版-edgedriver-EdgeDriver完整版-grid-Grid完整版-构建日期精确锁定了浏览器、驱动、Grid 与构建日期四个维度最适合需要完全可复现的 CI/CD 场景。第二组全版本 构建日期selenium/node-edge:121.0.2277.98-edgedriver-121.0.2277.128-20250202 selenium/node-edge:121.0.2277.98-20250202前者为浏览器完整版 驱动完整版 构建日期后者为浏览器完整版 构建日期。它们去掉 Grid 版本维度在锁定浏览器/驱动的前提下允许 Grid 小版本滚动。第三组短版本 构建日期selenium/node-edge:121.0-edgedriver-121.0-grid-4.28.1-20250202 selenium/node-edge:121.0-edgedriver-121.0-20250202 selenium/node-edge:121.0-20250202以短版本121.0为粒度表示Edge 121 主版本线上的最新可用构建日常测试推荐使用这一类便于跟随同主版本内的补丁更新。第四组本日志未生成不带构建日期的精简标签若RELEASE_OLD_VERSIONfalse还会额外追加121.0.2277.98-edgedriver-121.0.2277.128、121.0.2277.98、121.0-edgedriver-121.0、121.0这 4 个浮动标签tag_and_push_browser_images.sh。它们是同一浏览器主版本线在后续新发布中反复指向的稳定入口因此只在发布最新版本时更新避免旧版本发布覆盖掉新版本对应的浮动标签。将上述规则泛化可得到 docs/docker-hub/node-edge.md 中给出的标签模板selenium/node-edge-Major.Minor.Patch-YYYYMMDD # Grid 版本 构建日期 selenium/node-edge-browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD # 全版本组合从源码结构看edge分支与chrome、firefox分支共用同一套标签模板仅将chromedriver/geckodriver替换为edgedriver这正是 docker-selenium 多浏览器镜像发布保持统一心智模型的设计方式。四、镜像从何而来NodeEdge/Dockerfile的构建原理selenium/node-edge:4.28.1-20250202这一基础镜像所有标签的源头由 NodeEdge/Dockerfile 构建其顶层基于node-baseARG BASEnode-base并在其中依次完成四件事安装 Microsoft EdgeNodeEdge/Dockerfile默认安装microsoft-edge-stable稳定版当通过--build-arg EDGE_VERSIONmicrosoft-edge-stable121.0.2277.98-1指定具体版本时会从按版本归档的EDGE_ARCHIVE_SITENDViet/microsoft-edge-stable 发布页下载对应的.deb并--allow-downgrades安装——这是因为微软会定期从官方源清理旧版本归档站保证了历史版本的可复现构建。包装 Edge 启动脚本NodeEdge/wrap_edge_binary将/usr/bin/microsoft-edge重命名为-base后缀并写入一个包装脚本实现三件事设置umask 002使默认文件权限为 664/775保障容器内多用户与视频录制等组件可写解析--lang参数并转写为LANGUAGE环境变量因为 Debian/Ubuntu 不认--lang收集所有SE_BROWSER_ARGS_*前缀的环境变量值并拼入最终启动参数同时强制追加--no-sandbox以适配容器化运行。安装 msedgedriverNodeEdge/Dockerfile按架构选择linux64或linux-aarch64压缩包未显式指定EDGE_DRIVER_VERSION时先从LATEST_RELEASE_主版本_LINUX指针文件获取版本若该版本已被微软清理则回退到与浏览器完全一致的版本号并改从归档站下载最终软链接/usr/bin/msedgedriver指向/opt/selenium/msedgedriver-$EDGE_DRIVER_VERSION。写出浏览器探测信息NodeEdge/Dockerfile将MicrosoftEdge、实际版本号以及{ms:edgeOptions: {binary: ${SE_BROWSER_BINARY_LOCATION:-/usr/bin/microsoft-edge}}}写入/opt/selenium/browsers/edge/目录供节点的自动配置GENERATE_CONFIG与 Selenium Manager 探测使用并默认开启SE_NODE_ENABLE_MANAGED_DOWNLOADStrue节点自动管理会话下载文件对应--enable-managed-downloads。standalone-edge则由 Standalone/Dockerfile 以BASEnode-edge为基础构建见 Makefile 的edge_upgrade_version目标在节点镜像之上叠加完整的 Grid Server 单机模式。五、实践用这些标签跑起一个 Edge 节点拿到标签后即可按 docs/docker-hub/node-edge.md 的指引在 Selenium Grid 中运行 Edge 节点# 1. 创建共享网络 docker network create grid # 2. 启动 Hub暴露 4442-4444 端口 docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4.28.1-20250202 # 3. 启动 Edge 节点固定到本次发布的标签 docker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-edge:121.0.2277.98-edgedriver-121.0.2277.128-grid-4.28.1-20250202 # 4. 将 WebDriver 测试指向 http://localhost:4444两个关键实践要点--shm-size2g必须保留文档明确指出凡包含浏览器的镜像都应使用宿主机共享内存否则 Edge/Chrome 类浏览器在容器默认 64MB/dev/shm下极易崩溃建议使用完整标签固定版本latest虽然可用但无法锁定浏览器与驱动版本不利于测试结果的可复现性本文第三节的完整标签如121.0.2277.98-edgedriver-121.0.2277.128-grid-4.28.1-20250202是最稳妥的选择可选观察容器内部访问http://localhost:7900/?autoconnect1resizescalepasswordsecret可通过 noVNC 查看节点内的浏览器画面清理测试结束、容器退出后可执行docker network rm grid移除网络。Windows PowerShell 用户将续行反斜杠替换为反引号即可docs/docker-hub/node-edge.md 给出了完整示例。六、从源码到发布Makefile 中的完整调用链tag_and_push_browser_images.sh并不需要手工执行仓库 Makefile 已封装了标准发布链路Makefile 的tag_and_push_browser_images聚合目标按chrome → chrome-for-testing → chromium → firefox → edge顺序依次调用各浏览器目标Makefile 的tag_and_push_edge_images目标即执行./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) edge $(RELEASE_OLD_VERSION)与归档日志的命令一一对应其中VERSION、BUILD_DATE、NAMESPACE、PUSH_IMAGE、RELEASE_OLD_VERSION均为 Make 变量可在调用时覆盖打标签之前Makefile 的edge_upgrade_version目标会先完成镜像构建并通过三次docker run输出验证selenium-server.jar info --versionGrid 版本、microsoft-edge --version浏览器版本、msedgedriver --version驱动版本确保发布物版本可审计。这套构建 → 探测版本 → 生成标签 → 打标签/推送的流水线配合retag()对PROMOTE_TAGS的扩展既支持从零构建发布也支持只打标签不重构建的镜像推广模式是 docker-selenium 每周多浏览器版本发布得以自动化的核心机制。七、运行期相关配置补充理解了标签与镜像后还有几个运行期环境变量与 Edge 节点强相关完整清单见 ENV_VARIABLES.mdSE_BROWSER_BINARY_LOCATION覆盖 Edge 二进制路径默认/usr/bin/microsoft-edge若基于官方镜像定制安装到其他路径需通过该变量同步NodeEdge/Dockerfile 中写入的binary_location文件即引用它SE_NODE_BROWSER_VERSION覆盖 Node 注册时的browserVersion默认取镜像中 Edge 的短版本如121.0SE_NODE_MAX_SESSIONS默认1每个 Edge 节点的最大并发会话数配合SE_NODE_OVERRIDE_MAX_SESSIONS生效遗留进程清理SE_ENABLE_BROWSER_LEFTOVERS_CLEANUP默认false开启后supervisor 会按 NodeEdge/edge-cleanup.conf 启动 NodeEdge/edge-cleanup.sh 守护进程以SE_BROWSER_LEFTOVERS_PROCESSES_SECS默认 7200 秒杀掉超龄 Edge 进程、以SE_BROWSER_LEFTOVERS_TEMPFILES_DAYS默认 1 天清理/tmp下的.com.microsoft.Edge.*临时目录并以SE_BROWSER_LEFTOVERS_INTERVAL_SECS默认 3600 秒为周期循环。小结一份只有 21 行的归档变更日志 CHANGELOG/archived/4.28.1/edge_121.md背后是整个 docker-selenium 的浏览器镜像发布体系tag_and_push_browser_images.sh负责从镜像探测真实版本并生成 6或 10个结构化标签NodeEdge/Dockerfile保证 Edge 与 msedgedriver 的版本可复现安装Makefile将构建、验证、打标、推送串成一条自动化流水线而 docs/docker-hub/node-edge.md 则为使用者提供了从标签到运行的一站式指引。无论是想复现某个历史测试环境例如selenium/node-edge:121.0.2277.98-edgedriver-121.0.2277.128-grid-4.28.1-20250202还是理解 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点击查看免费下载相关推荐docker-selenium 镜像标签体系深度解析以 Selenium Grid 4.28.1 与 Edge 118 的发布记录为例docker selenium 镜像标签体系深度解析以 Selenium Grid 4.28.1 与 Edge 118 的发布记录为例 本篇技术指南以仓库中存测试后端云原生容器编排可观测性深度解读 docker-selenium 的 Edge 镜像标签生成机制以 Edge 114 发布记录为例深度解读 docker selenium 的 Edge 镜像标签生成机制以 Edge 114 发布记录为例 导读 本文以 docker selenium 仓库测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系深度解读以 Selenium Grid 4.28.1 Edge 130 发布记录为例docker selenium 浏览器镜像标签体系深度解读以 Selenium Grid 4.28.1 Edge 130 发布记录为例 本指南以 docker测试后端云原生容器编排可观测性上一篇5分钟掌握终极游戏模组管理器告别繁琐的模组配置烦恼下一篇3 个场景跑通 N_m3u8DL-REm3u8 下载、加密解密与直播录制的快速实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表