ARTICLE DETAIL

资讯详情

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

docker-selenium 浏览器镜像标签生成与发布全流程解析:以 Selenium Grid 4.30.0 + Microsoft Edge 124 为例

docker-selenium 浏览器镜像标签生成与发布全流程解析:以 Selenium Grid 4.30.0 + Microsoft Edge 124 为例 测试后端云原生容器编排可观测性【免费下载链接】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.30.0/edge_124.md 为骨架逐行解读一次真实的 Edge 镜像发布过程脚本tag_and_push_browser_images.sh如何从镜像中提取浏览器与驱动版本、如何按既定约定生成 12 个镜像标签、每个标签段位的含义以及发布参数构建日期、推送开关、旧版本归档开关如何影响最终产物。读完本文你将能够读懂仓库中任意一份浏览器发布日志独立完成一次自定义版本的镜像打标签操作并在自己的 Selenium Grid 中精准选择所需的镜像标签。一、这份发布日志记录了什么edge_124.md是一份由发布流水线自动生成的执行日志快照记录的是在 Selenium Grid4.30.0、构建日期20250323这个时间点上为Microsoft Edge 124.0.2478.109EdgeDriver 同为 124.0.2478.109生成并标记 Node 与 Standalone 两类镜像的完整过程。原文如下./tag_and_push_browser_images.sh 4.30.0 20250323 selenium false edge true Tagging images for browser edge, version 4.30.0, build date 20250323, namespace selenium Selenium Grid version - 4.30.0-20250323 Edge version - 124.0.2478.109 Short Edge version - 124.0 EdgeDriver version - 124.0.2478.109 Short EdgeDriver version - 124.0 Tagged selenium/node-edge:124.0.2478.109-edgedriver-124.0.2478.109-grid-4.30.0-20250323 Tagged selenium/standalone-edge:124.0.2478.109-edgedriver-124.0.2478.109-grid-4.30.0-20250323 Tagged selenium/node-edge:124.0.2478.109-edgedriver-124.0.2478.109-20250323 Tagged selenium/standalone-edge:124.0.2478.109-edgedriver-124.0.2478.109-20250323 Tagged selenium/node-edge:124.0.2478.109-20250323 Tagged selenium/standalone-edge:124.0.2478.109-20250323 Tagged selenium/node-edge:124.0-edgedriver-124.0-grid-4.30.0-20250323 Tagged selenium/standalone-edge:124.0-edgedriver-124.0-grid-4.30.0-20250323 Tagged selenium/node-edge:124.0-edgedriver-124.0-20250323 Tagged selenium/standalone-edge:124.0-edgedriver-124.0-20250323 Tagged selenium/node-edge:124.0-20250323 Tagged selenium/standalone-edge:124.0-20250323这份日志虽然只有 21 行却是理解整个 docker-selenium 镜像发布机制的最佳入口它同时包含了调用命令、版本探测结果、最终标签清单三部分关键信息每一部分都能在仓库源码中找到对应实现tag_and_push_browser_images.sh、Makefile、NodeEdge/Dockerfile。后续所有章节都将围绕这份日志展开。二、脚本调用与参数语义发布日志第一行就是完整的调用命令./tag_and_push_browser_images.sh 4.30.0 20250323 selenium false edge true对照 tag_and_push_browser_images.sh 顶部的参数解析这 6 个位置参数的含义如下位置参数本次取值含义与默认值1VERSION4.30.0Selenium Grid 核心版本号无默认值必须显式传入2BUILD_DATE20250323构建日期YYYYMMDD无默认值必须显式传入3NAMESPACEselenium镜像命名空间即镜像仓库前缀脚本第 16 行还会用NAME兜底为selenium4PUSH_IMAGEfalse是否在打标签后执行docker push默认false仅本地打标签5BROWSERedge目标浏览器支持chrome、chromium、edge、firefox、chrome-for-testing决定进入case的哪个分支6RELEASE_OLD_VERSIONtrue是否为旧版本归档发布模式默认false直接影响生成标签的数量详见第五节脚本开头还有两个由 CI 环境变量注入、不通过位置参数传入的开关PROMOTE_TAGS默认false为 true 时改为从 registry 到 registry 的docker buildx imagetools create方式重打标签与PROMOTE_GHCR_NAMESPACE配合PROMOTE_TAGS同时镜像到 GHCR。在 Makefile 中这一调用由tag_and_push_edge_imagestarget 触发Makefiletag_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、Edge、Firefox 五个浏览器的 target 串成一个聚合任务。Makefile 顶部Makefile对这些变量给出了默认值BUILD_DATE默认取当天日期$(shell date %Y%m%d)、PUSH_IMAGE与RELEASE_OLD_VERSION默认均为false也就是说发布流水线总是显式传参而普通用户在不传参的情况下调用只会得到一组不带日期的本地标签。三、版本探测标签中的数字从哪里来日志第 37 行输出了五个版本信息它们不是硬编码的而是脚本在运行时从刚构建好的镜像内部探测得出的。对应 tag_and_push_browser_images.sh 的 edge 分支EDGE_VERSION$(docker run --rm ${NAMESPACE}/node-edge:${TAG_VERSION} microsoft-edge --version | awk {print $3}) EDGE_SHORT_VERSION$(short_version ${EDGE_VERSION}) EDGEDRIVER_VERSION$(docker run --rm ${NAMESPACE}/node-edge:${TAG_VERSION} msedgedriver --version | awk {print $4}) EDGEDRIVER_SHORT_VERSION$(short_version ${EDGEDRIVER_VERSION})其中TAG_VERSION${VERSION}-${BUILD_DATE}即4.30.0-20250323也就是先构建出的基础镜像标签。整个探测链路为docker run --rm selenium/node-edge:4.30.0-20250323 microsoft-edge --version启动一个临时容器执行 Edge 版本命令输出形如Microsoft Edge 124.0.2478.109用awk {print $3}取第 3 个字段得到124.0.2478.109docker run --rm selenium/node-edge:4.30.0-20250323 msedgedriver --versionEdgeDriver 版本命令输出形如Microsoft Edge WebDriver 124.0.2478.109 ...用awk {print $4}取第 4 个字段得到124.0.2478.109short_version函数tag_and_push_browser_images.sh把完整版本按.分割后取前两段function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }于是124.0.2478.109→124.0。这套探测逻辑与镜像内部的实际安装内容强绑定Edge 与 EdgeDriver 的版本由 NodeEdge/Dockerfile 的EDGE_VERSION/EDGE_DRIVER_VERSION构建参数决定默认安装最新 stable 版本并允许通过EDGE_VERSIONmicrosoft-edge-beta88.0.692.0-1之类的形式锁定具体版本。四、十二个标签的命名约定与段位解析日志第 920 行输出的 12 个标签是由 6 种命名模式分别应用于node-edge与standalone-edge两个镜像得到的。这 6 种模式在 tag_and_push_browser_images.sh 中以EDGE_TAGS数组的形式集中定义EDGE_TAGS( ${EDGE_VERSION}-edgedriver-${EDGEDRIVER_VERSION}-grid-${TAG_VERSION} ${EDGE_VERSION}-edgedriver-${EDGEDRIVER_VERSION}-${BUILD_DATE} ${EDGE_VERSION}-${BUILD_DATE} ${EDGE_SHORT_VERSION}-edgedriver-${EDGEDRIVER_SHORT_VERSION}-grid-${TAG_VERSION} ${EDGE_SHORT_VERSION}-edgedriver-${EDGEDRIVER_SHORT_VERSION}-${BUILD_DATE} ${EDGE_SHORT_VERSION}-${BUILD_DATE} )随后通过 tag_and_push_browser_images.sh 的循环对两种镜像各打一遍for edge_tag in ${EDGE_TAGS[]}; do retag node-edge ${edge_tag} retag standalone-edge ${edge_tag} done将本次发布数据代入得到的标签矩阵如下B124.0.2478.109b124.0D124.0.2478.109d124.0G4.30.0-20250323模式标签示例信息含量完整版本 × 完整驱动 × GridB-edgedriver-D-grid-G浏览器、驱动、Grid 三者的完整版本与构建日期全部锁死可复现性最高完整版本 × 完整驱动 × 日期B-edgedriver-D-20250323浏览器与驱动完整版本 构建日期不写 Grid 版本完整版本 × 日期B-20250323浏览器完整版本 构建日期短版本 × 短驱动 × Gridb-edgedriver-d-grid-G用主次版本号124.0替代完整版本便于记忆与批量升级短版本 × 短驱动 × 日期b-edgedriver-d-20250323短版本对 构建日期短版本 × 日期b-20250323仅短版本 构建日期这套命名规则与 docs/docker-hub/node-edge.md 中Tagging Conventions标签约定的描述完全一致selenium/node-edge-browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD并由此衍生出全部排列组合。以124.0这样的大版本号作为标签可以让使用方在 Edge 小版本升级时无需修改代码——只要仓库发布了同主版本的新镜像docker pull就能拿到最新补丁。五、为什么这次发布没有无日期标签细心的读者会发现本次日志只输出了 12 个标签而脚本的EDGE_TAGS数组在满足条件时其实会追加 4 种无构建日期的模式。差异的根源在调用命令的第 6 个参数true对应脚本 tag_and_push_browser_images.shif [ ${RELEASE_OLD_VERSION} false ]; then EDGE_TAGS( ${EDGE_VERSION}-edgedriver-${EDGEDRIVER_VERSION} ${EDGE_VERSION} ${EDGE_SHORT_VERSION}-edgedriver-${EDGEDRIVER_SHORT_VERSION} ${EDGE_SHORT_VERSION} ) fiRELEASE_OLD_VERSIONtrue意味着这是一次归档旧版本的发布——4.30.0对应的 Edge 124 已经不再是当前主版本为了保持只让活跃版本占据无日期标签的语义脚本主动跳过124.0.2478.109、124.0.2478.109-edgedriver-124.0.2478.109、124.0、124.0-edgedriver-124.0这 4 个无日期标签避免后续拉取selenium/node-edge:124.0的用户被导向已过时组合。与此形成对照的是当前主版本发布如 CHANGELOG/4.48.0/edge_152.md同一脚本以RELEASE_OLD_VERSION缺省false运行时会额外生成无日期标签即日志会多出 8 行输出4 种模式 × 2 个镜像。如果你在自建发布流程中希望某个版本常驻无日期标签就应该用false或省略第 6 个参数。六、retag 与 push标签如何落到镜像仓库日志中每个Tagged selenium/...背后都是retag函数tag_and_push_browser_images.sh的一次执行。默认路径下它等价于一次docker tag把源镜像selenium/node-edge:4.30.0-20250323复制出一个新标签当PUSH_IMAGEtrue时再补一次docker pushdocker tag ${NAMESPACE}/${__image}:${TAG_VERSION} ${NAMESPACE}/${__image}:${__tag} echo Tagged ${NAMESPACE}/${__image}:${__tag} if [ ${PUSH_IMAGE} true ]; then docker push ${NAMESPACE}/${__image}:${__tag} fi如果PROMOTE_TAGStrue脚本会切换到docker buildx imagetools create直接在 registry 之间复制多架构 manifest详见脚本头部的注释说明适用于测试通过的镜像直接晋级为正式发布的 CI 场景避免本地重新构建导致多架构标签退化为单架构。本次日志中PUSH_IMAGEfalse说明该步骤只完成了本地打标签真正的推送由流水线的后续阶段如docker compose push或单独的 push 任务完成。这一点也解释了为什么日志只有Tagged而没有Pushed字样。七、从发布日志到实战使用理解了标签生成规则后就可以把这些标签直接用于生产实践。以本日志发布的 Edge 124 组合为例1. 精确锁定版本推荐 CI 场景确保完全可复现docker pull selenium/node-edge:124.0.2478.109-edgedriver-124.0.2478.109-grid-4.30.0-20250323 docker pull selenium/standalone-edge:124.0.2478.109-edgedriver-124.0.2478.109-202503232. 使用短版本标签跟随同主版本小版本更新docker pull selenium/node-edge:124.0-202503233. 在 docker-compose 中作为 Selenium Grid 的 Node 使用Hub 与 Node 需处于同一 Docker 网络并通过SE_EVENT_BUS_HOST指向 Hub参见 docs/docker-hub/node-edge.mdservices: node-edge: image: selenium/node-edge:124.0-edgedriver-124.0-grid-4.30.0-20250323 shm_size: 2g environment: - SE_EVENT_BUS_HOSTselenium-hub - SE_EVENT_BUS_PUBLISH_PORT4442 - SE_EVENT_BUS_SUBSCRIBE_PORT4443 networks: - grid4. 通过短版本标签定位当前发布序列仓库根目录的 README.md 中 Hub-and-Nodes 示例使用的selenium/node-edge:4.48.0-20260905正是本节所述Grid 版本 构建日期模式CHANGELOG/README.md 则以矩阵表的形式汇总了每个 Grid 版本覆盖的浏览器版本范围每一个 ✓ 都链到一份与本文所读日志同格式的发布记录可据此反查任何历史组合的完整标签列表。八、相关仓库资源导航本文涉及的核心实现与证据文件均为仓库根目录相对路径tag_and_push_browser_images.sh本文解读的核心脚本包含参数解析、版本探测、标签组装、retag/imagetools两条发布路径Makefiletag_and_push_browser_images及五个浏览器子 target、tag_and_push_browser_images_ghcrGHCR 镜像同步NodeEdge/Dockerfilenode-edge镜像构建定义EDGE_VERSION/EDGE_DRIVER_VERSION构建参数与 EdgeDriver 下载逻辑docs/docker-hub/node-edge.mdnode-edge镜像的标签约定说明与 Node/Standalone 运行示例CHANGELOG/README.mdGrid 版本 × 浏览器版本矩阵是检索全部发布日志的总索引CHANGELOG/4.48.0/edge_152.md与本文日志同格式的当前主版本发布记录可对照观察RELEASE_OLD_VERSIONfalse时标签数量的差异。需要提醒的是仓库的归档日志CHANGELOG/archived/记录的是历史版本组合未必仍被官方维护在实际测试环境中建议优先使用当前版本目录如CHANGELOG/4.48.0/中的组合并依据仓库 CHANGELOG/README.md 的说明自行评估 Grid 与浏览器版本的组合兼容性。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 浏览器镜像标签生成流水线解析以 Chrome 109 Selenium Grid 4.30.0 为例docker selenium 浏览器镜像标签生成流水线解析以 Chrome 109 Selenium Grid 4.30.0 为例 本文基于 docke测试后端云原生容器编排可观测性docker-selenium 镜像标签生成实战以 Selenium Grid 4.30.0 与 Edge 131 发布记录为例docker selenium 镜像标签生成实战以 Selenium Grid 4.30.0 与 Edge 131 发布记录为例 本文以 docker sel测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签生成机制解析以 Selenium Grid 4.30.0 Chrome 110 为例docker selenium 浏览器镜像标签生成机制解析以 Selenium Grid 4.30.0 Chrome 110 为例 Selenium Gr测试后端云原生容器编排可观测性上一篇chezmoi 模板函数 keepassxcAttribute 详解从 KeePassXC 数据库安全提取条目自定义属性下一篇TensorFlow.js Op 模块化改造完整指南以 SquaredDifference 为例的 Kernel/Gradient 迁移实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表