
测试后端云原生容器编排可观测性【免费下载链接】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.29.0版本 Chrome 106 镜像发布记录CHANGELOG/archived/4.29.0/chrome_106.md为切入点完整解读一条tag_and_push_browser_images.sh命令的输出从参数含义、版本探测、标签命名约定到它在整个向后兼容镜像矩阵与发布流水线中的位置。读完本文你将能够读懂任意一个chrome_XXX.md/chrome-for-testing_XXX.md变更记录文件理解selenium/node-chrome与selenium/standalone-chrome各类标签如106.0.5249.119-chromedriver-106.0.5249.61-grid-4.29.0-20250303的每一个组成部分并学会在容器化 Selenium 测试中精确固定浏览器与 Grid 版本。原始记录一次 Chrome 106 镜像的完整打标签输出归档文件 CHANGELOG/archived/4.29.0/chrome_106.md 的正文只有一段代码块它是 Selenium Grid4.29.0发布时为 Chrome106这一历史浏览器版本执行标签生成命令的完整真实输出./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 - 106.0.5249.119 Short Chrome version - 106.0 ChromeDriver version - 106.0.5249.61 Short ChromeDriver version - 106.0 Tagged selenium/node-chrome:106.0.5249.119-chromedriver-106.0.5249.61-grid-4.29.0-20250303 Tagged selenium/standalone-chrome:106.0.5249.119-chromedriver-106.0.5249.61-grid-4.29.0-20250303 Tagged selenium/node-chrome:106.0.5249.119-chromedriver-106.0.5249.61-20250303 Tagged selenium/standalone-chrome:106.0.5249.119-chromedriver-106.0.5249.61-20250303 Tagged selenium/node-chrome:106.0.5249.119-20250303 Tagged selenium/standalone-chrome:106.0.5249.119-20250303 Tagged selenium/node-chrome:106.0-chromedriver-106.0-grid-4.29.0-20250303 Tagged selenium/standalone-chrome:106.0-chromedriver-106.0-grid-4.29.0-20250303 Tagged selenium/node-chrome:106.0-chromedriver-106.0-20250303 Tagged selenium/standalone-chrome:106.0-chromedriver-106.0-20250303 Tagged selenium/node-chrome:106.0-20250303 Tagged selenium/standalone-chrome:106.0-20250303这段输出虽然只有 21 行却完整承载了该仓库最核心的资产——镜像标签命名约定。它回答了三个关键问题这次发布给哪些镜像打了标签、每个标签包含哪些版本信息、以及这些标签是如何被机器生成的。下面逐层拆解。命令行参数逐项解析该命令对应仓库根目录的 tag_and_push_browser_images.sh 脚本脚本开头按位置接收 7 个参数位置参数变量本次取值含义$1VERSION4.29.0Selenium Grid 版本号$2BUILD_DATE20250303构建/发布日期YYYYMMDD$3NAMESPACEselenium镜像命名空间对应 Docker Hub 的selenium组织$4PUSH_IMAGEfalse是否推送到镜像仓库默认false$5BROWSERchrome浏览器类型chrome/chromium/edge/firefox/chrome-for-testing$6RELEASE_OLD_VERSIONtrue是否为旧版本追加无构建日期的短标签默认false$7PLATFORM未传默认linux/amd64探测版本时运行的平台脚本首先把VERSION与BUILD_DATE拼接成完整的 Grid 标签4.29.0-20250303TAG_VERSION${VERSION}-${BUILD_DATE}输出第一行Selenium Grid version - 4.29.0-20250303即源于此。这里需要特别注意的是本次PUSH_IMAGEfalse意味着所有Tagged ...行只是本地docker tag的结果并未推送真正发布时由 CI 调用带true的版本例如在 Makefile 的tag_and_push_browser_images目标链中PUSH_IMAGE作为第 4 个参数传入。同时RELEASE_OLD_VERSIONtrue是本条命令的关键开关它的作用在标签命名约定一节会详细展开。版本探测从镜像内部读取真实版本号chrome分支的核心逻辑不是从外部配置里读版本号而是直接运行刚构建出的镜像、让镜像内的二进制自报版本。脚本第 65-73 行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})即用docker run临时启动selenium/node-chrome:4.29.0-20250303分别执行google-chrome --version与chromedriver --version再通过awk截取第 3 个与第 2 个字段得到Chrome version - 106.0.5249.119ChromeDriver version - 106.0.5249.61这种自证版本的设计保证了标签与镜像内容永远一致无论构建时基于何种上游版本标签都以镜像内实际二进制版本为准。同样的模式在脚本中扩展到其他浏览器chromium分支运行chromium --version取第 2 字段、edge分支运行microsoft-edge --version第 3 字段与msedgedriver --version第 4 字段、firefox分支运行firefox --version与geckodriver --version见 tag_and_push_browser_images.sh。短版本号截断脚本中的short_version()函数第 53-57 行把完整版本号按.分割后只保留前两段function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }于是106.0.5249.119变为106.0106.0.5249.61变为106.0对应输出中的Short Chrome version - 106.0与Short ChromeDriver version - 106.0。短版本标签的存在是为了让用户不需要记忆完整的小版本号仅凭浏览器大版本如106.0就能锁定镜像。标签命名约定6 类标签逐一解码结合脚本第 75-87 行的CHROME_TAGS数组本次输出对node-chrome与standalone-chrome各打了 6 个标签共 12 行。每个标签由若干信息段用-拼接逐段解读如下标签以 node-chrome 为例信息段构成适用场景106.0.5249.119-chromedriver-106.0.5249.61-grid-4.29.0-20250303完整 Chrome 版本 chromedriver 完整 ChromeDriver 版本 grid 完整 Grid 版本同时固定浏览器、驱动与 Grid 三者可追溯性最强106.0.5249.119-chromedriver-106.0.5249.61-20250303完整 Chrome 版本 ChromeDriver 版本 构建日期固定完整浏览器/驱动版本Grid 版本按发布配套106.0.5249.119-20250303完整 Chrome 版本 构建日期只关心浏览器完整版本106.0-chromedriver-106.0-grid-4.29.0-20250303短 Chrome 版本 ChromeDriver 短版本 Grid 完整版本用大版本号固定组合106.0-chromedriver-106.0-20250303短 Chrome 版本 短 ChromeDriver 版本 构建日期用大版本号固定浏览器与驱动106.0-20250303短 Chrome 版本 构建日期只关心浏览器大版本retag()函数第 31-51 行为每个标签执行docker tag ${NAMESPACE}/${image}:${TAG_VERSION} ${NAMESPACE}/${image}:${chrome_tag}并对node-chrome与standalone-chrome各循环一遍——这正是输出中两两成对出现的原因。可见该命名约定把浏览器版本 / 驱动版本 / Grid 版本 / 构建日期四类信息全部编码进标签用户可以根据自己的固定粒度选择任意一层。RELEASE_OLD_VERSION 参数的语义脚本第 88-99 行有一个重要分支仅当RELEASE_OLD_VERSIONfalse时才会追加另外 4 个不带构建日期的标签if [ ${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本次命令第 6 个参数为true因此输出中没有出现selenium/node-chrome:106.0.5249.119、selenium/node-chrome:106.0这类永久浮动标签。原因可以从命名反推106.0.5249.119这样的标签只含浏览器版本、不含构建日期在旧版本回溯发布时会与当前发布产生歧义容易让用户误拉而带-20250303的标签则能唯一锚定到Chrome 106.0.5249.119 20250303 构建这个确定组合。这也解释了为什么文件名的true会被保留在归档记录中——它是发布策略的一部分决定哪些标签被写入仓库。归档文件在版本矩阵中的位置该文件位于CHANGELOG/archived/4.29.0/目录而不是CHANGELOG/4.29.0/说明4.29.0已经是归档版本。整个CHANGELOG/目录维护着一张Selenium Grid 版本 × 浏览器版本的可追溯矩阵CHANGELOG/README.md 是矩阵总览每个浏览器版本号单元格都链接到对应的chrome_XXX.md记录文件每个发布版本的目录下如CHANGELOG/4.48.0/都有大量chrome_95.md~chrome_152.md、edge_*.md、firefox_*.md、chrome-for-testing_*.md文件每个文件正是本文解析的这种打标签输出CHANGELOG/generate-matrix-readme.py负责从这些记录文件自动生成矩阵 README。该矩阵的动机在 CHANGELOG/README.md 中有明确说明在保持 Selenium Grid 核心版本持续更新的同时让用户能够针对特定浏览器版本做跨浏览器测试或版本固定。因此每次 Grid 发布都会构建并标记一批历史浏览器版本镜像Chrome 106 就是这批向后兼容镜像中的一员。从源码结构看这依赖 tests/build-backward-compatible 一类的矩阵构建流程README 中Build the images with specific versions一节描述了通过./tests/build-backward-compatible/bootstrap.sh grid-version browser-versions browser构建指定组合的用法配合 Makefile 中的tag_and_push_chrome_images目标./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) chrome $(RELEASE_OLD_VERSION)完成镜像的标记与发布。整条链路可以概括为构建指定组合 → 运行镜像自报版本 → 按约定生成多级标签 → 归档记录到 CHANGELOG → 生成矩阵文档。这些标签的消费方式对普通使用者而言本文解读的标签最重要的用途就是精确拉取并固定版本。以本次记录为例若你的自动化测试需要固定 Chrome106.0.5249.119 ChromeDriver106.0.5249.61 Grid4.29.0可以拉取docker pull selenium/node-chrome:106.0.5249.119-chromedriver-106.0.5249.61-grid-4.29.0-20250303或者仅固定浏览器大版本与 Griddocker pull selenium/standalone-chrome:106.0-chromedriver-106.0-grid-4.29.0-20250303这一点在 README.md 中有明确建议Always use a Docker image with a full tag to pin a specific browser and Grid version始终使用完整标签固定浏览器与 Grid 版本。standalone-chrome与node-chrome的区别在于前者是自包含的单体模式浏览器与 Grid 组件在同一个容器内后者是 Hub-Node 分布式模式下挂到 Grid 的节点镜像。记录文件的自动化消费与校验这些chrome_XXX.md记录不仅是给人看的发布日志还会被自动化程序解析。仓库中的 tests/dockerhub_description/test_resolve_versions.py 对这类文件格式做了明确的单元测试约定记录文件通过Selenium Grid version -、Short Chrome version -等固定格式行暴露关键字段解析逻辑优先取短版本如106.0而非完整版本test_prefers_the_short_version_over_the_full_one用例验证了这一点test_chrome_prefix_does_not_match_chrome_for_testing用例表明chrome前缀不会误匹配chrome-for-testing记录若记录缺少Selenium Grid version行解析会直接判定失败test_changelog_without_a_grid_line_fails。也就是说记录的格式本身就是被测试锁定的契约。Docker Hub 描述页中的版本列表由scripts/dockerhub_description/resolve_versions.py生成正是从这些记录文件读取而来测试保证了格式漂移不会破坏发布描述生成。小结一条 21 行的归档命令输出背后是一套完整的版本化镜像发布体系以 tag_and_push_browser_images.sh 为执行核心以镜像自报版本保证标签真实性以完整/短版本 驱动 Grid 构建日期的多级标签满足不同粒度的固定需求以RELEASE_OLD_VERSION控制历史版本的标签策略最后归档到 CHANGELOG 矩阵并由自动化测试保障格式稳定。当你下次在 Docker Hub 上看到selenium/node-chrome:106.0-chromedriver-106.0-grid-4.29.0-20250303这样的标签时你已经能完整读懂它的每一个信息段也知道它来自哪一条命令、服务于怎样的向后兼容发布流程。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 发布记录解读Chrome for Testing 128.0.6613.137 镜像标签体系与构建链路docker selenium 4.48.0 发布记录解读Chrome for Testing 128.0.6613.137 镜像标签体系与构建链路 本篇技术测试后端云原生容器编排可观测性docker-selenium 4.48.0 发布记录Chrome for Testing 146 镜像版本与标签体系全解析docker selenium 4.48.0 发布记录Chrome for Testing 146 镜像版本与标签体系全解析 本篇文章基于 docker se测试后端云原生容器编排可观测性docker-selenium 镜像标签体系实战解读Chrome 118 与 Selenium Grid 4.29.0 的打包发布记录docker selenium 镜像标签体系实战解读Chrome 118 与 Selenium Grid 4.29.0 的打包发布记录 本篇技术指南以 doc测试后端云原生容器编排可观测性上一篇3分钟上手BBDown小白也能轻松下载B站视频的终极指南下一篇强力解锁B站视频下载BBDown全场景应用指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考