
测试后端云原生容器编排可观测性【免费下载链接】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点击查看免费下载导读本文以仓库归档的 Chrome 127 发布记录 为切入点逐行解读 docker-selenium 4.31.0 版本构建日期 20250414发布 Chrome 127.0.6533.119 镜像时生成的完整标签清单并结合仓库根目录的 tag_and_push_browser_images.sh 脚本源码讲透这些标签的命名约定、生成逻辑与发布链路。读完本文你将能够读懂任何一条浏览器镜像 changelog理解selenium/node-chrome与selenium/standalone-chrome系列标签的构成规则并能在自己的 Selenium Grid 测试环境中精准选择与拉取对应版本的镜像。一、这份发布记录还原了一次完整的镜像打标签现场归档于CHANGELOG/archived/4.31.0/目录下的chrome_127.md是一份典型的浏览器镜像发布 changelog其正文是发布脚本的一次真实执行输出./tag_and_push_browser_images.sh 4.31.0 20250414 selenium false chrome true Tagging images for browser chrome, version 4.31.0, build date 20250414, namespace selenium Selenium Grid version - 4.31.0-20250414 Chrome version - 127.0.6533.119 Short Chrome version - 127.0 ChromeDriver version - 127.0.6533.119 Short ChromeDriver version - 127.0 Tagged selenium/node-chrome:127.0.6533.119-chromedriver-127.0.6533.119-grid-4.31.0-20250414 Tagged selenium/standalone-chrome:127.0.6533.119-chromedriver-127.0.6533.119-grid-4.31.0-20250414 Tagged selenium/node-chrome:127.0.6533.119-chromedriver-127.0.6533.119-20250414 Tagged selenium/standalone-chrome:127.0.6533.119-chromedriver-127.0.6533.119-20250414 Tagged selenium/node-chrome:127.0.6533.119-20250414 Tagged selenium/standalone-chrome:127.0.6533.119-20250414 Tagged selenium/node-chrome:127.0-chromedriver-127.0-grid-4.31.0-20250414 Tagged selenium/standalone-chrome:127.0-chromedriver-127.0-grid-4.31.0-20250414 Tagged selenium/node-chrome:127.0-chromedriver-127.0-20250414 Tagged selenium/standalone-chrome:127.0-chromedriver-127.0-20250414 Tagged selenium/node-chrome:127.0-20250414 Tagged selenium/standalone-chrome:127.0-20250414这段输出可以拆成三层信息命令本身./tag_and_push_browser_images.sh 4.31.0 20250414 selenium false chrome true是仓库根目录 Makefile 中tag_and_push_browser_images系列目标tag_and_push_chrome_images等调用的同一脚本七个位置参数依次为Grid 版本、构建日期、镜像命名空间、是否 push、浏览器类型、是否重新发布旧版本。版本探测结果脚本先探测出镜像内实际打包的 Chrome 与 ChromeDriver 版本均为127.0.6533.119并各自推导出短版本127.0Selenium Grid 版本为4.31.0-20250414。打标签结果对node-chrome与standalone-chrome两个镜像各打出 6 个标签共 12 条Tagged记录。这一份记录同时承担两个角色对人类读者而言是版本对照表对自动化流水线而言是可解析的机器输入——仓库测试 test_resolve_versions.py 正是通过读取此类 changelog 文件中的Selenium Grid version -、Short Chrome version -、Short ChromeDriver version -等行来解析版本号用于生成 Docker Hub 描述。二、标签命名约定从全量版本到短版本的全景解码节点镜像文档 给出了标签结构的总纲selenium/node-chrome-Major.Minor.Patch-YYYYMMDD以及更完整的形如selenium/node-chrome-browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD的组合形式。Chrome 127 这次发布记录的 6 个标签正是这套约定的直接体现可归纳为三种维度标签浏览器版本驱动版本Grid 版本构建日期127.0.6533.119-chromedriver-127.0.6533.119-grid-4.31.0-20250414全量全量全量有127.0.6533.119-chromedriver-127.0.6533.119-20250414全量全量省略有127.0.6533.119-20250414全量省略省略有127.0-chromedriver-127.0-grid-4.31.0-20250414短版短版全量有127.0-chromedriver-127.0-20250414短版短版省略有127.0-20250414短版省略省略有可以看到同一镜像会同时提供“全量版本号”与“短版本号”两套标签。短版本由脚本中的short_version()函数从全量版本推导而来按.切分后仅取前两段因此127.0.6533.119变成127.0对应 tag_and_push_browser_images.sh 中的实现见下节。短标签的意义在于当 Chrome 与 ChromeDriver 小版本内修复如 127.0.6533.99 升级到 127.0.6533.119时127.0这类标签可以持续指向该大版本内的最新构建方便用户“跟随某个浏览器大版本”而不必频繁修改配置。需要特别说明的是这份归档 changelog 中命令末尾的第 7 个参数为true即RELEASE_OLD_VERSIONtrue。从脚本逻辑看当该参数为false时还会额外生成 4 个“浮动”标签——full-chrome-chromedriver-full-driver、full-chrome、short-chrome-chromedriver-short-driver、short-chrome即不带构建日期的127.0.6533.119-chromedriver-127.0.6533.119、127.0.6533.119、127.0-chromedriver-127.0、127.0。这次执行选择了不重建这四个浮动标签可以推断这是为了避免重复覆盖既有的“最新版”浮动标签。三、脚本原理版本探测、短版本推导与参数开关tag_and_push_browser_images.sh 是理解上述输出全部细节的关键其核心机制如下。3.1 七个位置参数参数位置默认值作用VERSION$1必填Selenium Grid 版本号如4.31.0BUILD_DATE$2必填构建日期如20250414NAMESPACE$3必填selenium镜像命名空间PUSH_IMAGE$4false打标签后是否执行docker pushBROWSER$5必填浏览器类型chrome/chromium/edge/firefox/chrome-for-testingRELEASE_OLD_VERSION$6false是否按“旧版本重发”模式执行PLATFORM$7linux/amd64探测浏览器版本时使用的--platform脚本开头通过TAG_VERSION${VERSION}-${BUILD_DATE}拼出基础镜像标签如4.31.0-20250414并以NAMESPACE${NAME:-selenium}兜底命名空间。3.2 版本探测以容器内命令输出为准对chrome分支脚本并不相信任何配置文件而是直接拉起刚构建好的镜像在容器内执行版本命令并用awk提取版本号CHROME_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})也就是说标签中的浏览器版本号来自google-chrome --version输出的第三段Google Chrome 127.0.6533.119中的127.0.6533.119ChromeDriver 版本号来自chromedriver --version输出的第二段。这也解释了为什么 changelog 中 Chrome 与 ChromeDriver 版本可以完全一致两者取自同一个构建产物的实际输出。从 NodeChrome/Dockerfile 的构建过程看Chrome 由 install-chrome.sh 安装支持google-chrome-stable渠道与精确版本ChromeDriver 由install-chromedriver.sh安装构建结束后镜像内还通过google-chrome --version | awk {print $3}把浏览器版本写入/opt/selenium/browsers/chrome/version供 Grid 节点上报能力使用——与打标签脚本的探测口径完全一致。3.3 短版本推导与标签组装short_version()函数负责截断function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }随后CHROME_TAGS数组按固定模板组装 6 个基础标签全量/短版 × 含 Grid 全量标签/仅日期/仅浏览器版本三类并在RELEASE_OLD_VERSIONfalse时追加 4 个浮动标签。脚本末尾的循环对node-chrome与standalone-chrome两个镜像逐标签调用retag因此同一浏览器版本的 Node 与 Standalone 镜像会共享同一套标签体系。3.4 retag普通重标与发布提升两条路径retag()函数根据环境变量PROMOTE_TAGS分派两条路径常规路径PROMOTE_TAGSfalse执行docker tag为本地镜像追加新标签若PUSH_IMAGEtrue随后执行docker push将每个新标签推送到镜像仓库。提升路径PROMOTE_TAGStrue用于“发布时直接推广已经过测试的镜像”的场景——此时本地并不存在源镜像docker tag无法胜任脚本改用docker buildx imagetools create在 registry 之间直接复制 manifest 索引从而保证多架构标签的一致性若同时设置了PROMOTE_GHCR_NAMESPACE还会在同一次调用中把标签同步镜像到 GHCR 命名空间。四、Makefile 中的发布入口仓库根目录的 Makefile 将打标签流程编排为聚合目标tag_and_push_browser_images: tag_and_push_chrome_images tag_and_push_chrome-for-testing_images tag_and_push_chromium_images tag_and_push_firefox_images tag_and_push_edge_images tag_and_push_chrome_images: ./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) chrome $(RELEASE_OLD_VERSION)$(VERSION)、$(BUILD_DATE)、$(NAMESPACE)、$(PUSH_IMAGE)、$(RELEASE_OLD_VERSION)都是 Make 变量由 CI 发布流水线注入chrome分支的等价手动命令即为本 changelog 第一行的形式。此外 Makefile 还提供tag_and_push_browser_images_ghcr目标用docker buildx imagetools create将本地已有标签批量复制到 GHCR 命名空间与脚本内的 GHCR 提升逻辑互为补充。五、用户视角如何按标签选择并运行 Chrome 镜像发布记录中的标签可以直接用于docker run。以文档推荐的 Hub Node 模式为例详见 node-chrome 镜像文档创建网络docker network create grid启动 Hubdocker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest用本次发布的完整标签启动 Chrome 节点docker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-chrome:127.0.6533.119-chromedriver-127.0.6533.119-grid-4.31.0-20250414将 WebDriver 测试指向http://localhost:4444如需观察容器内浏览器画面可访问http://localhost:7900/?autoconnect1resizescalepasswordsecretnoVNC。选择标签时可按需取舍精度需要完全可复现的测试环境应使用包含浏览器全量版本、驱动版本、Grid 版本与构建日期的“最长”标签只关心某个浏览器大版本时可用127.0这类短标签latest虽然可用但文档明确建议用完整标签固定具体浏览器与 Grid 版本。另外文档特别提醒运行含浏览器的镜像务必加上--shm-size2g使用宿主共享内存避免容器/dev/shm过小导致 Chrome 崩溃。六、版本矩阵与 changelog 生态单份chrome_127.md只是矩阵中的一个节点。CHANGELOG/README.md 以“Grid 版本 × 浏览器版本”矩阵的形式汇总了所有发布记录最新 Grid 版本在前、历史版本归档在CHANGELOG/archived/下每个 ✓ 链接到对应浏览器版本的详细 changelog。该 README 明确说明了这套机制的设计动机——既要持续供给最新 Selenium Grid 核心功能又要让用户能因浏览器版本兼容性问题而锁定特定浏览器版本同时也坦诚指出项目并未对“每一种 Grid 与浏览器的组合”做全量测试用户需要依据自身测试需求自行评估选择。这份 changelog 同时也是机器可读的数据源如前所述test_resolve_versions.py 会解析 changelog 文件中的Selenium Grid version -、Short Chrome version -、Short ChromeDriver version -等字段用于自动解析最新发布版本并更新 Docker Hub 描述该测试还验证了chrome_152.md这类前缀不会误匹配chrome-for-testing以及缺少 Grid 版本行时解析会失败等边界行为。可见这些逐条Tagged的记录并非“日志噪音”而是整个版本发布与文档自动化体系的事实来源。结语一份看似只有 20 行的chrome_127.md串联起了 docker-selenium 仓库中镜像构建NodeChrome/Dockerfile、版本探测与打标签tag_and_push_browser_images.sh、发布编排Makefile、镜像使用文档node-chrome.md以及版本矩阵与自动化解析CHANGELOG/README.md、test_resolve_versions.py的完整链条。理解标签的构成规则与生成原理后你不仅能准确解读任何一份同类 changelog还能在跨浏览器测试中依据“浏览器版本 驱动版本 Grid 版本 构建日期”的任意组合精确锁定所需的镜像让 Selenium 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 129 镜像标签解析从 4.31.0 版本发布记录看懂 Selenium Grid 镜像 Tagging Conventiondocker selenium Chrome 129 镜像标签解析从 4.31.0 版本发布记录看懂 Selenium Grid 镜像 Tagging Con测试后端云原生容器编排可观测性docker-selenium Chrome 95 镜像标签全解析从发布脚本到 Selenium Grid 4.31.0 的拉取实战docker selenium Chrome 95 镜像标签全解析从发布脚本到 Selenium Grid 4.31.0 的拉取实战 本篇技术指南以 dock测试后端云原生容器编排可观测性docker-selenium 4.31.0 的 Edge 116 镜像发布记录解读从构建日志到标签约定与发布脚本原理docker selenium 4.31.0 的 Edge 116 镜像发布记录解读从构建日志到标签约定与发布脚本原理 本文以 docker selenium测试后端云原生容器编排可观测性上一篇PHPBrew项目贡献指南如何参与开源PHP版本管理工具开发下一篇Video2X 完整指南4 步把老视频变清晰AI 超分辨率与帧插值一次讲透创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考