测试后端云原生容器编排可观测性【免费下载链接】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 123 发布记录 为切入点逐层拆解浏览器镜像版本标签的生成命令、命名规范与底层实现帮助读者掌握selenium/node-chrome与selenium/standalone-chrome系列镜像的标签含义、发布脚本参数语义以及按需固定浏览器版本的拉取策略。读完本文你将能够独立读懂仓库内任意一份chrome_*.md/edge_*.md/firefox_*.md发布记录并准确选用合适版本的镜像标签接入 Selenium Grid。什么是浏览器镜像发布记录在 CHANGELOG/README.md 版本矩阵中每一个✓都指向一份对应 Grid 版本与浏览器版本的详细 changelog 文件。例如CHANGELOG/archived/4.29.0/chrome_123.md就是 Selenium Grid 4.29.0 对 Chrome 123 系列镜像的标签发布实录。这类文件并非泛泛的更新日志而是一段可直接复现的发布命令及其完整标准输出。以本文关联文档为例其内容如下./tag_and_push_browser_images.sh 4.29.0 20250303 selenium false chrome true Tagging images for browser chrome, version 4.29.0, build date 20250303, namespace selenium Selenium Grid version - 4.29.0-20250303 Chrome version - 123.0.6312.122 Short Chrome version - 123.0 ChromeDriver version - 123.0.6312.122 Short ChromeDriver version - 123.0 Tagged selenium/node-chrome:123.0.6312.122-chromedriver-123.0.6312.122-grid-4.29.0-20250303 Tagged selenium/standalone-chrome:123.0.6312.122-chromedriver-123.0.6312.122-grid-4.29.0-20250303 Tagged selenium/node-chrome:123.0.6312.122-chromedriver-123.0.6312.122-20250303 Tagged selenium/standalone-chrome:123.0.6312.122-chromedriver-123.0.6312.122-20250303 Tagged selenium/node-chrome:123.0.6312.122-20250303 Tagged selenium/standalone-chrome:123.0.6312.122-20250303 Tagged selenium/node-chrome:123.0-chromedriver-123.0-grid-4.29.0-20250303 Tagged selenium/standalone-chrome:123.0-chromedriver-123.0-grid-4.29.0-20250303 Tagged selenium/node-chrome:123.0-chromedriver-123.0-20250303 Tagged selenium/standalone-chrome:123.0-chromedriver-123.0-20250303 Tagged selenium/node-chrome:123.0-20250303 Tagged selenium/standalone-chrome:123.0-20250303这段输出包含了三层信息发布命令本身、容器内探测到的浏览器与驱动版本、以及最终生成的全部镜像标签。下面逐一解读。发布命令的七个参数发布记录第一行调用了仓库根目录的 tag_and_push_browser_images.sh 脚本参数按顺序对应脚本开头的位置参数tag_and_push_browser_images.sh参数示例值脚本变量含义14.29.0VERSIONSelenium Grid 版本号与构建镜像时的VERSION一致220250303BUILD_DATE构建日期YYYYMMDD与VERSION组合成TAG_VERSION4.29.0-202503033seleniumNAMESPACE镜像仓库命名空间即镜像名selenium/node-chrome的前缀4falsePUSH_IMAGE是否执行docker pushfalse表示本次只打标签不推送5chromeBROWSER浏览器类型脚本支持chrome、chromium、edge、firefox、chrome-for-testing6trueRELEASE_OLD_VERSION是否按旧版本策略发布直接决定浮动标签是否生成详见下文7省略PLATFORM版本探测时使用的平台默认linux/amd64脚本首先拼接出TAG_VERSION随后进入case ${BROWSER}分发。对于chrome分支它会在容器内运行两条探测命令从镜像内部直接读取版本号tag_and_push_browser_images.shCHROME_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})这正是发布记录中 Chrome version - 123.0.6312.122 与 ChromeDriver version - 123.0.6312.122 两行的来源先以node-chrome:4.29.0-20250303启动一次临时容器再对google-chrome --version与chromedriver --version的输出用awk截取版本号字段。因此标签中的版本信息并非人工填写而是由已构建镜像实测得到保证了标签即事实。标签命名规范全版本、短版本与日期维度观察发布记录中 12 行Tagged输出node-chrome与standalone-chrome两个镜像各获得 6 个标签。这 6 个标签由脚本中预定义的CHROME_TAGS数组生成tag_and_push_browser_images.sh可归纳为三条命名族全版本 驱动 Grid 全量标识123.0.6312.122-chromedriver-123.0.6312.122-grid-4.29.0-20250303—— 同时锁定浏览器小版本、驱动小版本与 Grid 发布号信息最完整适合需要绝对可复现的测试环境。全版本 驱动 日期123.0.6312.122-chromedriver-123.0.6312.122-20250303—— 精确到构建日期适用于某个日期快照。仅浏览器版本 日期123.0.6312.122-20250303—— 当浏览器与驱动版本一致Chrome 123 与 ChromeDriver 123 恰好同号时最简洁的日期快照。以上每条族再各生成一个短版本变体即把完整版本123.0.6312.122截取为主版本号123.0Chrome 123 与 ChromeDriver 123.0 均如此得到123.0-chromedriver-123.0-grid-4.29.0-20250303123.0-chromedriver-123.0-20250303123.0-20250303短版本由脚本中的short_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]} }短版本标签的价值在于使用者只需记住123.0这个主版本号即可引用该 Chrome 大版本而不必关心其后续小版本演进到123.0.63xx.x的哪一个。RELEASE_OLD_VERSION 与浮动标签细心的读者会发现这份发布记录没有生成selenium/node-chrome:123.0、selenium/node-chrome:123.0.6312.122这类不带日期、不带 grid 标识的浮动标签。原因在于命令第 6 个参数为true。脚本逻辑如下tag_and_push_browser_images.shif [ ${RELEASE_OLD_VERSION} false ]; then CHROME_TAGS( ${CHROME_VERSION}-chromedriver-${CHROMEDRIVER_VERSION} ${CHROME_VERSION} ${CHROME_SHORT_VERSION}-chromedriver-${CHROMEDRIVER_SHORT_VERSION} ${CHROME_SHORT_VERSION} ) fi也就是说只有当RELEASE_OLD_VERSIONfalse参数 6 为false时才会追加 4 个浮动标签123.0.6312.122-chromedriver-123.0.6312.122、123.0.6312.122、123.0-chromedriver-123.0、123.0。反之RELEASE_OLD_VERSIONtrue时仅保留带日期/grid 标识的 6 个标签。从脚本逻辑可以推断其设计意图123.0这类浮动标签会被反复复用——每当 Chrome 123 系列发布新小版本并再次执行发布流程时123.0会被重新指向最新的 123.x。若为旧版本如 4.29.0 网格发布期间同时维护 Chrome 95 到 134 多个大版本CHANGELOG/README.md 的矩阵证实了这一点也打浮动标签就会与最新小版本互相覆盖、改变使用者拉到的镜像内容。因此RELEASE_OLD_VERSIONtrue的含义是仅为该旧版本补充确定性的日期标签而不抢占浮动标签。该参数由 Makefile 的$(RELEASE_OLD_VERSION)变量透传Makefile发布流水线据此对每个浏览器版本执行一次脚本。标签背后的镜像构建链发布脚本探测到的 Chrome 123 与 ChromeDriver 123.0.6312.122来自 NodeChrome/Dockerfile 构建阶段的安装结果浏览器部分由 install-chrome.sh 完成默认安装google-chrome-stable渠道也支持通过google-chrome-stable123.0.6167.120-1这类渠道版本语法精确安装指定小版本构建期可通过CHROME_VERSION构建参数控制。驱动部分由 install-chromedriver.sh 完成未指定CHROME_DRIVER_VERSION时脚本先读取已安装 Chrome 的主版本号如 123再据此解析对应 ChromeDriveramd64 上从 Chrome for Testing 渠道下载其他架构回退到 Chromium 驱动包。构建完成后Dockerfile 还会把浏览器版本写入/opt/selenium/browsers/chrome/version供 Selenium 配置使用NodeChrome/Dockerfile。因此整个链路是闭环的Dockerfile 安装 → 版本探测脚本实测 → 标签生成 → 用户按标签拉取任何一环的版本信息都以镜像内真实可执行文件为准。发布流程中的调用关系仓库通过 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)即一次make tag_and_push_browser_images会按顺序为五种浏览器chrome、chrome-for-testing、chromium、firefox、edge各执行一遍打标签脚本。Chrome 123 发布记录正是其中chrome分支在某次发布时的实录。脚本的retag函数tag_and_push_browser_images.sh还支持两种发布模式常规模式docker tag本地镜像并可选docker push对应参数 4 的PUSH_IMAGE开关。镜像晋升模式当PROMOTE_TAGStrue由 CI 在发布已测试镜像而非重建镜像时设置时改用docker buildx imagetools create在 registry 与 registry 之间复制 manifest从而保留多架构特性若同时设置PROMOTE_GHCR_NAMESPACE还会在同一次调用中把标签镜像同步到 GHCR 命名空间。使用者视角如何按标签固定浏览器版本CHANGELOG 版本矩阵存在的意义正是让使用者找到标签、拉取镜像、直接开测。以本记录为例可用的确定性标签包括docker pull selenium/node-chrome:123.0.6312.122-chromedriver-123.0.6312.122-grid-4.29.0-20250303 docker pull selenium/standalone-chrome:123.0-chromedriver-123.0-20250303 docker pull selenium/node-chrome:123.0-20250303选择建议追求精确可复现例如回归排查、与线上失败现场完全一致使用全版本 驱动 grid 标识的最长标签只需要某个构建日期的快照使用带-20250303的标签只关心浏览器主版本且接受其小版本随发布更新使用123.0浮动标签注意浮动标签由RELEASE_OLD_VERSIONfalse的发布写入并随该系列更新重新指向。仓库同时提供了大量docker-compose-v3*.yml编排文件如 docker-compose-v3.yml可在此基础上将上述 node/standalone 镜像接入完整的 Selenium Grid 拓扑。需要说明的是CHANGELOG/README.md 明确提醒项目并未对每一种 Grid 版本与浏览器版本的组合做全量兼容性测试使用者应根据自身测试需求评估并自行决定选用哪个组合。小结一份看似只有命令与输出的发布记录实际承载了 docker-selenium 镜像工程化的完整语义tag_and_push_browser_images.sh通过容器内实测版本 → 拼接标签族 → 按发布策略决定浮动标签三步把 Grid 版本、浏览器版本、驱动版本与构建日期编织成一套自描述、可检索、可精确复现的镜像标签体系。理解这套命名规则后无论是阅读其余archived/4.29.0目录下的 chrome_134.md 等发布记录还是在跨浏览器测试中固定 Chrome 版本都能快速定位到正确的镜像标签。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 4.48.0 浏览器镜像 Tag 体系深度解读从 Edge 123 发布记录到 tag_and_push_browser_images.sh 实现剖析docker selenium 4.48.0 浏览器镜像 Tag 体系深度解读从 Edge 123 发布记录到 tag_and_push_browser_im测试后端云原生容器编排可观测性docker-selenium 镜像标签生成指南解读 tag_and_push_browser_images.sh 与 Chrome 112 发布记录docker selenium 镜像标签生成指南解读 tag_and_push_browser_images.sh 与 Chrome 112 发布记录 本篇技测试后端云原生容器编排可观测性docker-selenium Chrome 129 镜像发布记录解读浏览器镜像 Tag 约定与 tag_and_push_browser_images.sh 机制剖析docker selenium Chrome 129 镜像发布记录解读浏览器镜像 Tag 约定与 tag_and_push_browser_images.sh测试后端云原生容器编排可观测性上一篇抖音下载器终极指南3分钟学会批量下载无水印视频下一篇FastF1 贡献指南从 Pull Request 规范到代码质量门槛的完整实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考