ARTICLE DETAIL

资讯详情

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

docker-selenium 镜像标签矩阵解析:以 Chrome 118 + Selenium Grid 4.28.1 为例

docker-selenium 镜像标签矩阵解析:以 Chrome 118 + Selenium Grid 4.28.1 为例 测试后端云原生容器编排可观测性【免费下载链接】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点击查看免费下载本文以 CHANGELOG/archived/4.28.1/chrome_118.md 中记录的发布日志为核心深入解读 Selenium Docker 项目docker-selenium如何为一个固定的浏览器版本生成并发布一整套语义化 Docker 镜像标签。读者将掌握tag_and_push_browser_images.sh脚本的参数体系、Chrome 118 与 ChromeDriver 118 的版本检测与短版本推导逻辑、10 个完整标签的命名规则与使用场景以及这些标签在 Selenium Grid 中的实际拉取方式从而能够在真实项目中精确锁定镜像版本、规避浏览器升级带来的回归风险。一、这篇发布日志在说什么CHANGELOG/archived/4.28.1/chrome_118.md的全文是一段脚本执行记录对应仓库在发布Selenium Grid 4.28.1构建日期 20250202时为 Chrome 118 浏览器镜像打标签并推送的过程./tag_and_push_browser_images.sh 4.28.1 20250202 selenium false chrome true Tagging images for browser chrome, version 4.28.1, build date 20250202, namespace selenium Selenium Grid version - 4.28.1-20250202 Chrome version - 118.0.5993.117 Short Chrome version - 118.0 ChromeDriver version - 118.0.5993.70 Short ChromeDriver version - 118.0这段日志属于 CHANGELOG/README.md 所维护的「Selenium Grid × 浏览器版本矩阵」的一部分。该矩阵用一张大表列出每个 Grid 版本分别提供了哪些浏览器版本的镜像每个 ✓ 都链接到对应的 changelog 详情页。4.28.1一行覆盖了 Chrome 95132而chrome_118.md就是其中 Chrome 118 的详情页。矩阵的设计动机在 README 中写得很清楚持续提供最新的 Selenium Grid 核心版本同时保留用户锁定浏览器版本的能力——当某个浏览器版本存在兼容性问题或团队因内部规范需要固定浏览器时直接找到对应 tag 拉取镜像即可。需要留意的是README 也明确提示项目并未对每个 Grid 版本 × 每种浏览器版本的全部组合做完整测试使用者需要根据自己的测试需求自行评估。二、命令参数逐个拆解日志第一行的命令共 7 个位置参数对应 tag_and_push_browser_images.sh 脚本开头的参数解析位置参数日志中的值作用1VERSION4.28.1Selenium Grid 版本号与构建日期拼接成发布版本4.28.1-202502022BUILD_DATE20250202镜像构建日期YYYYMMDD用于标识某一批构建3NAMESPACEselenium镜像仓库命名空间最终拼出selenium/node-chrome、selenium/standalone-chrome4PUSH_IMAGEfalse是否在打标签后执行docker push默认值即false5BROWSERchrome浏览器类型脚本支持chrome、chromium、edge、firefox、chrome-for-testing6RELEASE_OLD_VERSIONtrue是否为历史旧版本补发标签true时跳过部分无日期标签7PLATFORM省略目标平台默认linux/amd64用于docker run探测版本时指定平台关于第 6 个参数需要展开说明脚本中RELEASE_OLD_VERSION${6:-false}而本日志传入true。查看脚本中CHROME_TAGS数组的构造逻辑tag_and_push_browser_images.sh当RELEASE_OLD_VERSIONfalse时会追加 4 个无日期标签如118.0.5993.117-chromedriver-118.0.5993.70、118.0.5993.117、118.0-chromedriver-118.0、118.0而true时只生成 6 个带日期或带 grid 版本号的标签。这是因为旧版本补发场景下无日期标签会与最新发布产生歧义——用户在拉selenium/node-chrome:118.0时无法判断它属于哪一批构建因此补发旧版本时只生成明确带日期/版本的 6 个标签日志第 920 行正是这 6 个标签 × 2 种镜像的完整输出。从仓库调用链看该脚本既可以被直接执行也可以通过 Makefile 的tag_and_push_chrome_images目标间接调用tag_and_push_chrome_images: ./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) chrome $(RELEASE_OLD_VERSION)而tag_and_push_browser_images目标则聚合了 chrome、chrome-for-testing、chromium、edge、firefox 五种浏览器的全部打标工作Makefile。make传入的$(VERSION)、$(BUILD_DATE)、$(NAMESPACE)、$(PUSH_IMAGE)、$(RELEASE_OLD_VERSION)均来自 Makefile 顶部的变量定义实际构建流程中由 CI如 deploy.yml注入。三、版本探测与短版本推导脚本的核心工作之一是从镜像内部探测真实的浏览器与驱动版本。对chrome分支tag_and_push_browser_images.sh它用两条docker run命令分别拿到 Chrome 与 ChromeDriver 的版本号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})基础镜像为selenium/node-chrome:4.28.1-20250202发布版本TAG_VERSION${VERSION}-${BUILD_DATE}在容器内执行google-chrome --version与chromedriver --version再用awk提取对应字段探测结果即日志第 5、7 行Chrome118.0.5993.117、ChromeDriver118.0.5993.70。随后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]} }于是得到短版本118.0日志第 6、8 行。短版本的价值在于浏览器主版本升级往往不影响 WebDriver 协议兼容性118.0这类主版本号标签足够满足大多数我要 Chrome 118 系的使用场景同时比精确到 build 号的标签更易读、更稳定。需要补充的是这种从镜像内部探测版本的做法避免了在构建脚本里硬编码版本号——NodeChrome/Dockerfile中 Chrome 与 ChromeDriver 均可通过构建参数覆盖CHROME_VERSION、CHROME_DRIVER_VERSION见 NodeChrome/Dockerfile实际安装的版本由 install-chrome.sh 与 install-chromedriver.sh 决定因此以运行时探测结果为准最可靠。ChromeDriver 的安装来源还涉及架构判断amd64 走 Chrome for Testing 官方源arm64 等架构则可能回退到 Debian 的chromium-driver包详见 resolve-chromedriver-source.sh 的注释与分支逻辑。四、10 个标签的完整清单与命名规则日志第 920 行共输出10 个不同 tag它们同时被应用到selenium/node-chrome与selenium/standalone-chrome两个镜像上tag_and_push_browser_images.sh 中的循环对两个镜像逐一调用retag。按命名模式可归纳为 4 组组 1完整信息标签长版本号 grid 版本selenium/node-chrome:118.0.5993.117-chromedriver-118.0.5993.70-grid-4.28.1-20250202 selenium/standalone-chrome:118.0.5993.117-chromedriver-118.0.5993.70-grid-4.28.1-20250202命名模式Chrome完整版本-chromedriver-ChromeDriver完整版本-grid-Grid版本-构建日期。信息最完整一次标识出浏览器、驱动、Grid 核心、构建日期四个维度适合做精确的可追溯部署。组 2长版本号 构建日期selenium/node-chrome:118.0.5993.117-chromedriver-118.0.5993.70-20250202 selenium/standalone-chrome:118.0.5993.117-chromedriver-118.0.5993.70-20250202 selenium/node-chrome:118.0.5993.117-20250202 selenium/standalone-chrome:118.0.5993.117-20250202命名模式浏览器版本[-chromedriver-驱动版本]-构建日期。其中只带浏览器版本日期的标签第 13、14 行适合不需要关心驱动具体 build 号的场景。组 3短版本 grid 版本selenium/node-chrome:118.0-chromedriver-118.0-grid-4.28.1-20250202 selenium/standalone-chrome:118.0-chromedriver-118.0-grid-4.28.1-20250202 selenium/node-chrome:118.0-chromedriver-118.0-20250202 selenium/standalone-chrome:118.0-chromedriver-118.0-20250202 selenium/node-chrome:118.0-20250202 selenium/standalone-chrome:118.0-20250202命名模式把浏览器与驱动都换成短版本118.0保留 grid 版本或构建日期。日志第 1520 行全部属于这一组共 6 个。组 4无日期标签本次未生成当RELEASE_OLD_VERSIONfalse即发布新版本时还会追加 4 个更短的标签tag_and_push_browser_images.sh118.0.5993.117-chromedriver-118.0.5993.70 118.0.5993.117 118.0-chromedriver-118.0 118.0它们是用户最常直接使用的浮动标签selenium/node-chrome:118.0表示最近一次发布的 Chrome 118 镜像。但由于本次是为已归档的旧版本4.28.1补发标签RELEASE_OLD_VERSIONtrue这 4 个标签被跳过避免覆盖更新版本已发布的同名单标签。五、retag 与推送机制所有标签最终通过retag()函数落到镜像上tag_and_push_browser_images.sh其行为分两种模式常规模式本日志所走路径docker tag ${__source} ${NAMESPACE}/${__image}:${__tag} if [ ${PUSH_IMAGE} true ]; then docker push ${NAMESPACE}/${__image}:${__tag} fi源镜像始终是selenium/node-chrome:4.28.1-20250202/selenium/standalone-chrome:4.28.1-20250202先本地docker tag创建别名日志中的Tagged ...行即这一步骤的输出本日志PUSH_IMAGEfalse所以只打标不推送发布阶段通常会再以true执行一次或将标签同步到 GHCR。Promote 模式当环境变量PROMOTE_TAGStrue时由 deploy.yml 在发布流程复用已测试镜像而非重建时设置docker tag无法表达注册表到注册表的别名——docker pull只会拉回 runner 自身架构的镜像导致浏览器标签变成单架构。此时脚本改用docker buildx imagetools create在 manifest 层面直接复制多架构索引并可通过PROMOTE_GHCR_NAMESPACE在同一调用中同时镜像到 GHCRtag_and_push_browser_images.sh。与之配套的还有 Makefile 中的tag_and_push_browser_images_ghcr目标用于把本地所有标签通过docker buildx imagetools create同步到 GHCR 命名空间。六、如何用这些标签拉起 Selenium Grid理解了标签体系后实际使用非常直接——把node-chrome换成standalone-chrome即可在单容器与 Grid 节点两种形态间切换# 单容器模式Standalone精确锁定浏览器与驱动版本 docker pull selenium/standalone-chrome:118.0.5993.117-chromedriver-118.0.5993.70-grid-4.28.1-20250202 # 以短版本锁定 Chrome 118 系列跟随该系列最新补丁 docker pull selenium/node-chrome:118.0-20250202配合仓库根目录的 docker-compose-v3.yml 使用 Grid 时只需将image字段指向上述任意 tag并在测试代码里通过browserNamechrome发起请求。选择建议追求可复现、可追溯使用组 1 的完整标签四个维度一目了然锁定浏览器大版本、接受补丁更新使用118.0系短标签在多个 Grid 版本间对比同一浏览器在 CHANGELOG/README.md 矩阵中查找对应 Grid 版本下的chrome_118.md即可拿到该组合的完整标签列表。需要再次强调官方矩阵明确指出并未对每个组合做全量测试。对于生产环境建议在固定标签后先跑一遍自己的冒烟用例仓库 tests/SeleniumTests 与 tests/SmokeTests 提供了现成参考再全面放量。七、延伸其他浏览器的同类日志chrome_118.md的格式对所有浏览器一致。tag_and_push_browser_images.sh为每种浏览器准备了独立的 case 分支tag_and_push_browser_images.sh差异仅在于版本探测命令与命名前缀chromium探测chromium --version与chromedriver --versionedge探测microsoft-edge --version与msedgedriver --version标签前缀用-edgedriver-firefox探测firefox --version与geckodriver --version标签前缀用-geckodriver-chrome-for-testing探测命令相同但awk取字段不同$5对应 CfT 版本号格式。因此CHANGELOG/archived/4.28.1 下edge_*.md、firefox_*.md等内容与本文结构完全同构掌握了 Chrome 118 这一例即可举一反三读懂整个矩阵。赞分享测试后端云原生容器编排可观测性【免费下载链接】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.48.0 与 Chrome for Testing 115 为例docker selenium 浏览器镜像版本标签全解析以 Selenium Grid 4.48.0 与 Chrome for Testing 115 为例测试后端云原生容器编排可观测性docker-selenium 版本矩阵解析Selenium Grid 4.48.0 与 Chrome 121.0.6167.184 镜像标签及 Tag 生成机制详解docker selenium 版本矩阵解析Selenium Grid 4.48.0 与 Chrome 121.0.6167.184 镜像标签及 Tag 生成测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系详解以 Selenium Grid 4.48.0 与 Chrome 99 版本组合为例docker selenium 浏览器镜像标签体系详解以 Selenium Grid 4.48.0 与 Chrome 99 版本组合为例 本篇技术指南聚焦 d测试后端云原生容器编排可观测性上一篇Devstral-Small-2-24B-Instruct-2512-8bit性能优化8位量化如何减少内存占用50%下一篇Bootstrap Icons安全审计工具自动检测风险创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表