ARTICLE DETAIL

资讯详情

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

docker-selenium Firefox 134 镜像标签全解析:Selenium Grid 4.29.0 发布记录与 tag_and_push_browser_images.sh 标签体系实战

docker-selenium Firefox 134 镜像标签全解析:Selenium Grid 4.29.0 发布记录与 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点击查看免费下载本篇技术指南以 docker-selenium 仓库中 CHANGELOG/archived/4.29.0/firefox_134.md 这一发布记录为骨架完整还原 Selenium Grid 4.29.0 版本 Firefox 134.0.2 镜像的标签生成过程从一条tag_and_push_browser_images.sh命令行到 10 个node-firefox/standalone-firefox镜像标签的全部细节。读者读完后将掌握 docker-selenium 浏览器镜像的标签命名规范、多维度标签排列规律、版本探测逻辑以及如何在发布矩阵中精准定位并拉取固定版本的 Firefox 测试镜像。一、这条 changelog 记录是什么在 docker-selenium 仓库中CHANGELOG目录维护着一张Selenium Grid 版本 × 浏览器版本矩阵见 CHANGELOG/README.md每个浏览器版本对应一份以firefox_版本号.md命名的发布记录。4.29.0 发布后旧版本目录被归档至CHANGELOG/archived/firefox_134.md即归档版本 4.29.0 的 Firefox 134 记录。这份记录本质上是一段发布流水线的标准输出开发者在发布时执行了标签脚本脚本先探测镜像内 Firefox 与 GeckoDriver 的真实版本再据此生成一组排列组合后的镜像标签并逐一打标。记录全文如下./tag_and_push_browser_images.sh 4.29.0 20250303 selenium false firefox true Tagging images for browser firefox, version 4.29.0, build date 20250303, namespace selenium Selenium Grid version - 4.29.0-20250303 Firefox version - 134.0.2 Short Firefox version - 134.0 GeckoDriver version - 0.36.0 Short GeckoDriver version - 0.36 Tagged selenium/node-firefox:134.0.2-geckodriver-0.36.0-grid-4.29.0-20250303 Tagged selenium/standalone-firefox:134.0.2-geckodriver-0.36.0-grid-4.29.0-20250303 Tagged selenium/node-firefox:134.0.2-geckodriver-0.36.0-20250303 Tagged selenium/standalone-firefox:134.0.2-geckodriver-0.36.0-20250303 Tagged selenium/node-firefox:134.0.2-20250303 Tagged selenium/standalone-firefox:134.0.2-20250303 Tagged selenium/node-firefox:134.0-geckodriver-0.36-grid-4.29.0-20250303 Tagged selenium/standalone-firefox:134.0-geckodriver-0.36-grid-4.29.0-20250303 Tagged selenium/node-firefox:134.0-geckodriver-0.36-20250303 Tagged selenium/standalone-firefox:134.0-geckodriver-0.36-20250303 Tagged selenium/node-firefox:134.0-20250303 Tagged selenium/standalone-firefox:134.0-20250303二、命令参数逐一拆解发布记录第一行揭示了脚本的完整调用形式脚本源码位于仓库根目录的 tag_and_push_browser_images.sh。7 个位置参数的含义如下参数本记录取值含义$14.29.0Selenium Grid 版本号$220250303构建/发布日期YYYYMMDD与版本号拼接为完整 Grid 版本4.29.0-20250303$3selenium镜像命名空间Docker Hub 上的用户名/组织$4false是否 push 镜像到仓库默认false仅本地打标签$5firefox浏览器类型脚本支持chrome/chromium/edge/firefox/chrome-for-testing$6trueRELEASE_OLD_VERSION是否为旧版本补发标签。true时只生成带日期/Grid 版本的标签不生成纯浏览器版本的长期标签避免覆盖已发布镜像$7未传目标平台默认linux/amd64其中两个值得注意的设计TAG_VERSION${VERSION}-${BUILD_DATE}脚本第 15 行将 Grid 版本与构建日期拼接成4.29.0-20250303作为整个发布周期的唯一标识也即镜像的基础 tag。第 6 个参数控制标签集合的规模当RELEASE_OLD_VERSIONfalse时标签数组还会追加134.0.2-geckodriver-0.36.0、134.0.2、134.0-geckodriver-0.36、134.0四组“纯净版本标签”而本记录因属于旧版本补发true刻意跳过了它们只保留 5 组带日期/Grid 版本的标签。三、版本探测镜像内的真实版本从哪来标签中的134.0.2与0.36.0并非脚本硬编码而是在已构建好的node-firefox:4.29.0-20250303镜像内实时探测出来的。脚本第 195-204 行对应 Firefox 分支的逻辑FIREFOX_VERSION$(docker run --rm ${NAMESPACE}/node-firefox:${TAG_VERSION} firefox --version | awk {print $3}) GECKODRIVER_VERSION$(docker run --rm ${NAMESPACE}/node-firefox:${TAG_VERSION} geckodriver --version | awk NR1{print $2})即分别执行firefox --version与geckodriver --version并提取输出字段确保标签与实际打包进镜像的二进制版本严格一致。随后通过short_version()函数脚本第 53-57 行取前两段生成短版本号function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }于是134.0.2 → 134.0、0.36.0 → 0.36短版本标签的意义在于当补丁版本patch更新时短版本标签仍能指向该系列的最新镜像方便使用者无需精确到补丁号即可获取较新的 Firefox 134.x。镜像内 Firefox 与 GeckoDriver 是如何装进去的版本探测能成立前提是镜像构建时已固定版本。查看 NodeFirefox/Dockerfile 可知Firefox 安装通过ARG FIREFOX_VERSION指定版本构建时根据架构amd64 取x86_64aarch64 取aarch64优先尝试从 Mozilla 官方下载.deb包Dockerfile 第 42-45 行下载失败则回退到tar.bz2压缩包随后调用/opt/bin/get_lang_package.sh下载语言包并执行一次apt-get upgrade修复 Firefox 依赖的已知 CVE。GeckoDriver 安装ARG GECKODRIVER_VERSIONlatestDockerfile 第 75-86 行通过 GitHub releases 解析最新版本号按架构下载geckodriver-${GK_VERSION}-linux64.tar.gzamd64或-linux-aarch64.tar.gzarm64解压至/opt/geckodriver-$GK_VERSION并软链到/usr/bin/geckodriver。浏览器元信息落盘构建末尾将版本写入/opt/selenium/browsers/firefox/Dockerfile 第 93-96 行供 Selenium Grid 节点配置时读取moz:firefoxOptions.binary。四、标签命名规范与 10 个标签的排列逻辑本记录产生的 5 组× node/standalone 两种镜像 10 个标签恰好覆盖了 docker-selenium 标签体系的三种维度标签维度示例node-firefox含义完整版 驱动版 Grid 版134.0.2-geckodriver-0.36.0-grid-4.29.0-20250303浏览器、驱动、Grid、构建日期全部锁定可完全复现浏览器版 驱动版 日期134.0.2-geckodriver-0.36.0-20250303锁定浏览器与驱动Grid 版本隐含在日期对应的发布周期内浏览器版 日期134.0.2-20250303仅锁定浏览器补丁版本与构建日期短版 短驱动版 Grid 版134.0-geckodriver-0.36-grid-4.29.0-20250303短版本组合跟随补丁更新短版 短驱动版 日期134.0-geckodriver-0.36-20250303短版本 构建日期短版 日期134.0-20250303最短的带日期标签这些标签通过脚本第 206-230 行的FIREFOX_TAGS数组生成再循环调用retag函数第 232-235 行同时应用于node-firefox与standalone-firefox两种镜像。retag()脚本第 31-51 行在PUSH_IMAGEtrue时会连带执行docker push这也解释了脚本第 4 个参数为何存在。官方在 docs/docker-hub/standalone-firefox.md 中对标签结构做了同样描述selenium/standalone-firefox-Major.Minor.Patch-YYYYMMDD以及更完整的browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD形式与脚本实现互相印证。为什么同一浏览器要发两种镜像记录中每个标签都成对出现对应 docker-selenium 的两种运行形态node-firefoxSelenium Grid 中的浏览器节点需要与 Hub/路由器等组件搭配组成分布式网格standalone-firefox单机一体化模式自带完整的 Selenium Grid 服务Standalone/Dockerfile 中设置了SE_SESSION_REQUEST_TIMEOUT、SE_SESSION_RETRY_INTERVAL等运行时参数一条命令即可跑起可用的测试环境。两者基于同一份NodeFirefox镜像内容构建因此标签版本完全对齐。五、发布矩阵与归档机制firefox_134.md之所以位于archived/下是因为仓库通过 CHANGELOG/generate-matrix-readme.py 维护矩阵脚本每次运行都会把除最新版外的 Grid 版本目录整体移入archived/第 8-42 行的archive_old_versions()再扫描所有firefox_版本.md文件正则([\w-])_(\d)\.md生成 CHANGELOG/README.md 中的矩阵表。你在矩阵 Firefox 表中看到 4.29.0 行的firefox_134.md链接即指向本记录同时可以看到 4.28.1 也发布了 Firefox 134对应firefox_134.md的另一个归档文件说明同一浏览器版本可被多个 Grid 版本打包发布。矩阵 README 还特别注明并非每个 Grid 与浏览器版本的组合都经过完整测试用户需根据自身测试需求评估是否采用特定组合。六、如何用这些标签拉取并运行 Firefox 134 测试镜像理解了标签体系后落地使用非常简单。假设你需要在 Grid 4.29.0 下固定 Firefox 134.0.2 跑 WebDriver 测试# 方式一完整锁定版本推荐用于可复现的 CI docker pull selenium/node-firefox:134.0.2-geckodriver-0.36.0-grid-4.29.0-20250303 # 方式二独立 Standalone 模式直接运行 docker run -d -p 4444:4444 -p 7900:7900 \ --shm-size2g \ selenium/standalone-firefox:134.0-geckodriver-0.36-grid-4.29.0-20250303随后将 WebDriver 测试指向http://localhost:4444即可按 docs/docker-hub/standalone-firefox.md 的说明。两个实践要点运行含浏览器的镜像时务必加--shm-size2g避免共享内存不足导致浏览器崩溃本地验证场景可用latest但正式环境建议使用带完整版本的 tag 固定浏览器与 Grid 版本这正是标签脚本提供如此多排列组合的目的用最合适的粒度固定测试环境。七、延伸标签流水线如何接入构建体系标签脚本不是孤立存在的它与仓库的 Makefile 构建体系耦合。Makefile 第 781-796 行定义了聚合目标与分浏览器目标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_firefox_images: ./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)其中VERSION、BUILD_DATE、NAMESPACE、PUSH_IMAGE、RELEASE_OLD_VERSION均可在命令行覆盖Makefile 第 1-16 行使用$(or ...)提供默认值VERSION默认4.49.0、PUSH_IMAGE默认false、RELEASE_OLD_VERSION默认false。也就是说发布流程会先按TAG_VERSION如4.29.0-20250303构建出基础镜像再通过本脚本补上所有浏览器/驱动维度标签并推送。Makefile 中还提供了tag_and_push_browser_images_ghcr第 798-808 行用docker buildx imagetools create将全部标签镜像同步到 GHCR 命名空间保证多仓库标签一致。结语一份看似只有 21 行的发布记录背后是 docker-selenium 一整套“探测版本 → 排列标签 → 双镜像打标 → 矩阵归档”的发布自动化。通过本文的拆解你不仅能读懂firefox_134.md这份归档 changelog更能直接使用tag_and_push_browser_images.sh的标签语法在 Selenium Grid 4.29.0 体系中精准固定 Firefox 134.0.2 GeckoDriver 0.36.0 的组合需要进一步研究时可从 tag_and_push_browser_images.sh、NodeFirefox/Dockerfile 与 CHANGELOG/README.md 三处源码继续深入。赞分享测试后端云原生容器编排可观测性【免费下载链接】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点击查看免费下载相关推荐CANN ops-math 中的 aclnnLogicalOr 逻辑或算子编译部署、API 调用与源码级实现解析CANN ops math 中的 aclnnLogicalOr 逻辑或算子编译部署、API 调用与源码级实现解析 本篇技术指南围绕 CANN ops math测试后端云原生容器编排可观测性OpenCLI IMDb 适配器把电影搜索、Top 250 榜单与用户评论变成可脚本化的 CLI 数据源OpenCLI IMDb 适配器把电影搜索、Top 250 榜单与用户评论变成可脚本化的 CLI 数据源 OpenCLI 的 IMDb 适配器基于公共页面无测试后端云原生容器编排可观测性Selenium Grid Docker 镜像发布实录Firefox 101.0.1 版本标签体系与 tag_and_push_browser_images.sh 全解析Selenium Grid Docker 镜像发布实录Firefox 101.0.1 版本标签体系与 tag_and_push_browser_images.测试后端云原生容器编排可观测性上一篇免费开源Cherry MX键帽3D模型打造个性化机械键盘的终极指南下一篇为什么APK Installer能让你在Windows上告别安卓模拟器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表