ARTICLE DETAIL

资讯详情

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

Selenium Grid 镜像 Chrome 117 发布标签体系解析:从 `tag_and_push_browser_images.sh` 看浏览器镜像标签生成全流程

Selenium Grid 镜像 Chrome 117 发布标签体系解析:从 `tag_and_push_browser_images.sh` 看浏览器镜像标签生成全流程 测试后端云原生容器编排可观测性【免费下载链接】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.32.0/chrome_117.md 为核心完整还原 Selenium Grid 4.32.0 发布 Chrome 117.0.5938.149 镜像时的真实打标签过程并结合仓库根目录下的 tag_and_push_browser_images.sh 源码逐行拆解多维度标签的生成规则。读完本文你将掌握 selenium/node-chrome 与 selenium/standalone-chrome 镜像标签的命名规律、各标签之间的排列组合关系以及如何通过构建参数与 Makefile 目标复现一次完整的浏览器镜像发布。一、归档文档呈现了什么一次完整的 Chrome 镜像打标签记录归档文档 chrome_117.md 以一段命令执行输出记录了 Selenium Grid 4.32.0 发布时对 Chrome 117 镜像的打标签全过程。文档中保留的原始输出如下./tag_and_push_browser_images.sh 4.32.0 20250515 selenium false chrome true Tagging images for browser chrome, version 4.32.0, build date 20250515, namespace selenium Selenium Grid version - 4.32.0-20250515 Chrome version - 117.0.5938.149 Short Chrome version - 117.0 ChromeDriver version - 117.0.5938.149 Short ChromeDriver version - 117.0 Tagged selenium/node-chrome:117.0.5938.149-chromedriver-117.0.5938.149-grid-4.32.0-20250515 Tagged selenium/standalone-chrome:117.0.5938.149-chromedriver-117.0.5938.149-grid-4.32.0-20250515 Tagged selenium/node-chrome:117.0.5938.149-chromedriver-117.0.5938.149-20250515 Tagged selenium/standalone-chrome:117.0.5938.149-chromedriver-117.0.5938.149-20250515 Tagged selenium/node-chrome:117.0.5938.149-20250515 Tagged selenium/standalone-chrome:117.0.5938.149-20250515 Tagged selenium/node-chrome:117.0-chromedriver-117.0-grid-4.32.0-20250515 Tagged selenium/standalone-chrome:117.0-chromedriver-117.0-grid-4.32.0-20250515 Tagged selenium/node-chrome:117.0-chromedriver-117.0-20250515 Tagged selenium/standalone-chrome:117.0-chromedriver-117.0-20250515 Tagged selenium/node-chrome:117.0-20250515 Tagged selenium/standalone-chrome:117.0-20250515这条记录同时透露出本次发布的三个关键版本事实Selenium Grid 版本4.32.0-20250515Grid 版本号 构建日期组成的复合标识Chrome 版本117.0.5938.149短版本号117.0ChromeDriver 版本117.0.5938.149短版本号117.0与 Chrome 完全同版本符合 Chrome 117 时代 ChromeDriver 与 Chrome 主版本强绑定的发布惯例需要说明的是本次打标签命令第 6 个参数为true即RELEASE_OLD_VERSIONtrue因此本次只生成 6 组标签当该参数为false时脚本还会额外生成 4 组不含构建日期的裸版本标签详见下文第三节。二、命令参数逐项解析归档文档中的命令行即为脚本的标准调用方式其参数含义可直接对照 tag_and_push_browser_images.sh 的头部定义./tag_and_push_browser_images.sh 4.32.0 20250515 selenium false chrome true位置示例值脚本变量含义14.32.0VERSIONSelenium Grid 主版本号220250515BUILD_DATE镜像构建日期YYYYMMDD3seleniumNAMESPACE镜像命名空间默认selenium4falsePUSH_IMAGE是否 push 镜像到仓库默认false5chromeBROWSER浏览器类型chrome/chromium/chrome-for-testing/edge/firefox6trueRELEASE_OLD_VERSION是否为旧版本补发标签默认false7可选PLATFORM目标平台默认linux/amd64其中TAG_VERSION${VERSION}-${BUILD_DATE}会先拼出4.32.0-20250515作为后续所有标签后缀的基础对应脚本 第 15 行。值得注意的是脚本中有一处历史遗留逻辑NAMESPACE${NAME:-selenium}第 16 行即命名空间优先取环境变量NAME未设置时才回退到第 3 个参数传入的selenium。三、标签生成逻辑6 4 组标签的排列组合脚本的chrome分支第 63-106 行是整个打标签流程的核心其执行步骤为从已构建的node-chrome:4.32.0-20250515镜像中依次读取真实版本号docker run --rm selenium/node-chrome:4.32.0-20250515 google-chrome --version取第 3 列得到117.0.5938.149docker run --rm selenium/node-chrome:4.32.0-20250515 chromedriver --version取第 2 列得到117.0.5938.149通过short_version()函数第 53-57 行按.分割后取前两段得到短版本号117.0按固定模板拼装 6 组标签逐一为node-chrome与standalone-chrome两个镜像打标签本次归档输出对应的 6 组标签模板如下模板本次实际标签${CHROME_VERSION}-chromedriver-${CHROMEDRIVER_VERSION}-grid-${TAG_VERSION}117.0.5938.149-chromedriver-117.0.5938.149-grid-4.32.0-20250515${CHROME_VERSION}-chromedriver-${CHROMEDRIVER_VERSION}-${BUILD_DATE}117.0.5938.149-chromedriver-117.0.5938.149-20250515${CHROME_VERSION}-${BUILD_DATE}117.0.5938.149-20250515${CHROME_SHORT_VERSION}-chromedriver-${CHROMEDRIVER_SHORT_VERSION}-grid-${TAG_VERSION}117.0-chromedriver-117.0-grid-4.32.0-20250515${CHROME_SHORT_VERSION}-chromedriver-${CHROMEDRIVER_SHORT_VERSION}-${BUILD_DATE}117.0-chromedriver-117.0-20250515${CHROME_SHORT_VERSION}-${BUILD_DATE}117.0-20250515当RELEASE_OLD_VERSIONfalse时如当前主版本发布场景脚本 第 88-99 行 还会追加 4 组不带构建日期的稳定可引用标签模板示例本次版本${CHROME_VERSION}-chromedriver-${CHROMEDRIVER_VERSION}117.0.5938.149-chromedriver-117.0.5938.149${CHROME_VERSION}117.0.5938.149${CHROME_SHORT_VERSION}-chromedriver-${CHROMEDRIVER_SHORT_VERSION}117.0-chromedriver-117.0${CHROME_SHORT_VERSION}117.0这样设计的原因是短版本标签117.0与裸版本标签117.0.5938.149是用户日常引用镜像的最便捷方式官方文档 docs/docker-hub/node-chrome.md 中推荐的标签结构selenium/node-chrome-browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD正是由这里生成的标签拼接而成。四、打标签的底层操作docker tag 与多架构处理脚本的retag()函数第 31-51 行负责实际执行打标签其中包含两条不同路径常规路径docker tag 源镜像 新标签若PUSH_IMAGEtrue则随后执行docker push。归档记录中第 4 个参数为false因此只在本地产出标签不推送。PROMOTE_TAGStrue路径当发布流程直接推广测试过的镜像而非重新构建时由部署流水线通过环境变量PROMOTE_TAGS控制改用docker buildx imagetools create在 registry 与 registry 之间直接复制多架构 manifest避免单架构回退问题脚本头部注释 第 18-30 行 对此有详细说明。chrome分支中docker run --platform ${PLATFORM}显式指定平台读取浏览器版本正是为了在多架构linux/amd64、linux/arm64构建场景下确保读取到的 Chrome/ChromeDriver 版本准确对应目标平台产物。五、源码级支撑Chrome 117 是如何进入镜像的要理解node-chrome镜像为什么能报出117.0.5938.149这个版本需要回溯 NodeChrome/Dockerfile 的构建链路1. Chrome 安装Dockerfile 通过构建参数CHROME_VERSION默认google-chrome-stable控制安装目标并调用 install-chrome.sh。该脚本支持两种模式版本精确指定当CHROME_VERSION形如google-chrome-stable117.0.5938.149-1时直接从 Google Chrome 存档仓库下载对应版本号的.deb包安装频道模式google-chrome-stable/google-chrome-beta/google-chrome-unstable时从官方 apt 仓库安装对应频道的最新版。安装完成后脚本输出google-chrome --version这正是打标签流程中读取版本号的依据。2. ChromeDriver 安装install-chromedriver.sh 支持自动探测与显式指定CHROME_DRIVER_VERSION两种方式。Chrome 117 恰好处于 Chrome for TestingCfT体系的分界点附近——脚本注释明确说明115 之前的 Chrome 走旧的chromedriver.storage.googleapis.com冻结 API115 及之后走 Chrome for Testing 公开存储第 41-44 行。对 amd64 平台驱动下载地址为https://storage.googleapis.com/chrome-for-testing-public/version/linux64/chromedriver-linux64.zip安装后以版本号命名的二进制会软链到/usr/bin/chromedriver保证chromedriver --version可被 tag 脚本稳定读取。3. 浏览器版本信息落盘Dockerfile 在构建期将浏览器信息写入/opt/selenium/browsers/chrome/目录第 65-72 行包括浏览器name、version以及goog:chromeOptions的二进制路径配置供 Selenium Grid Node 启动时自动探测可用浏览器能力使用。六、发布入口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)也就是说make tag_and_push_browser_images会依次为 Chrome、Chrome for Testing、Chromium、Firefox、Edge 五类浏览器执行打标签。其中VERSION、BUILD_DATE、NAMESPACE、PUSH_IMAGE、RELEASE_OLD_VERSION等变量由 Makefile 顶层统一传入。归档记录中的./tag_and_push_browser_images.sh 4.32.0 20250515 selenium false chrome true即等价于该流程中chrome分支的一次单浏览器执行。此外Makefile 还提供了tag_and_push_browser_images_ghcr目标将 Docker Hub 上的所有浏览器标签通过docker buildx imagetools create镜像到 GHCR 命名空间完成多仓库同步分发。七、实践建议如何按需引用 Chrome 117 标签综合归档文档、tag_and_push_browser_images.sh 与 docs/docker-hub/node-chrome.md 的说明可按以下原则选择标签日常快速验证使用短版本标签如selenium/node-chrome:117.0语义清晰且随补丁自动推进前提是发布时RELEASE_OLD_VERSIONfalse生成了该标签锁定精确构建使用全版本标签selenium/node-chrome:117.0.5938.149-chromedriver-117.0.5938.149-grid-4.32.0-20250515可同时锁定浏览器、驱动与 Grid 版本适合生产环境复现运行容器时务必添加共享内存参数官方文档强调运行含浏览器镜像时应使用--shm-size2g例如docker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-chrome:117.0若需要独立浏览器节点配合 Grid Hub 使用可先docker network create grid创建网络再分别启动 Hub暴露4442-4444端口与该 Node。八、结语通过 CHANGELOG/archived/4.32.0/chrome_117.md 这一份看似只有 21 行的打标签记录我们完整还原了 Selenium Grid 浏览器镜像发布体系的骨架版本探测、短版本规约、64 组标签模板、docker tag与docker buildx imagetools双路径、以及 Makefile 层面的全浏览器矩阵编排。这套标签体系的价值在于无论是希望便捷跟踪浏览器主版本的用户还是需要精确锁定 Grid 浏览器 驱动的生产环境都能在selenium/node-chrome与selenium/standalone-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 Chrome 122 镜像标签体系全解从 tag_and_push_browser_images.sh 看 Selenium Grid 浏览器镜像的版本编排docker selenium Chrome 122 镜像标签体系全解从 tag_and_push_browser_images.sh 看 Selenium测试后端云原生容器编排可观测性docker-selenium 4.30.0 Edge 129 镜像标签体系详解从 tag_and_push_browser_images.sh 看浏览器镜像发布全流程docker selenium 4.30.0 Edge 129 镜像标签体系详解从 tag_and_push_browser_images.sh 看浏览器镜像测试后端云原生容器编排可观测性IPTVnator Xtream 直播自动 TS 回退机制解析HLS 初次失败后的单次降级播放IPTVnator Xtream 直播自动 TS 回退机制解析HLS 初次失败后的单次降级播放 导读 本篇文章围绕 IPTVnator 仓库中 .change测试后端云原生容器编排可观测性上一篇BongoCat输入可视化工具提升工作效率的数字伴侣下一篇Aquarelle未来发展方向探索下一代网页动画技术的可能性创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表