ARTICLE DETAIL

资讯详情

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

docker-selenium 4.48.0 发布实录:从 Firefox 142 看浏览器镜像的多标签生成与发布机制

docker-selenium 4.48.0 发布实录:从 Firefox 142 看浏览器镜像的多标签生成与发布机制 测试后端云原生容器编排可观测性【免费下载链接】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 版本发布的 Firefox 142 镜像记录为切入点深入解读 tag_and_push_browser_images.sh 脚本的核心逻辑、标签命名规范与底层构建原理。读者通过本文可以掌握浏览器镜像发布命令的完整参数语义、node-firefox/standalone-firefox镜像的 10 组标签是如何推导生成的以及 Firefox 与 GeckoDriver 版本如何在容器内被探测与绑定。一、发布记录原文一次完整的 Firefox 镜像打标签输出4.48.0 版本的发布记录保存在 CHANGELOG/4.48.0/firefox_142.md 中全文是一次真实执行tag_and_push_browser_images.sh的终端输出./tag_and_push_browser_images.sh 4.48.0 20260909 selenium false firefox true Tagging images for browser firefox, version 4.48.0, build date 20260909, namespace selenium Selenium Grid version - 4.48.0-20260909 Firefox version - 142.0.1 Short Firefox version - 142.0 GeckoDriver version - 0.37.1 Short GeckoDriver version - 0.37 Tagged selenium/node-firefox:142.0.1-geckodriver-0.37.1-grid-4.48.0-20260909 Tagged selenium/standalone-firefox:142.0.1-geckodriver-0.37.1-grid-4.48.0-20260909 Tagged selenium/node-firefox:142.0.1-geckodriver-0.37.1-20260909 Tagged selenium/standalone-firefox:142.0.1-geckodriver-0.37.1-20260909 Tagged selenium/node-firefox:142.0.1-20260909 Tagged selenium/standalone-firefox:142.0.1-20260909 Tagged selenium/node-firefox:142.0-geckodriver-0.37-grid-4.48.0-20260909 Tagged selenium/standalone-firefox:142.0-geckodriver-0.37-grid-4.48.0-20260909 Tagged selenium/node-firefox:142.0-geckodriver-0.37-20260909 Tagged selenium/standalone-firefox:142.0-20260909 Tagged selenium/standalone-firefox:142.0-20260909 Tagged selenium/node-firefox:142.0-20260909这段输出虽然只有 21 行却完整浓缩了一次浏览器镜像发布的关键信息本次发布对应 Selenium Grid 4.48.0构建日期 20260909、Firefox 142.0.1、GeckoDriver 0.37.1并为node-firefox与standalone-firefox两类镜像各生成了一组多语义标签。二、命令逐参数拆解七个位置参数的含义与默认值发布记录第一行就是触发整个流程的命令其参数完全对应脚本 tag_and_push_browser_images.sh 开头的解析逻辑./tag_and_push_browser_images.sh 4.48.0 20260909 selenium false firefox true位置参数本记录取值脚本中的变量说明1VERSION4.48.0VERSION$1Selenium Grid 发布版本号2BUILD_DATE20260909BUILD_DATE$2镜像构建日期格式YYYYMMDD3NAMESPACEseleniumNAMESPACE$3镜像仓库命名空间默认selenium4PUSH_IMAGEfalsePUSH_IMAGE${4:-false}是否执行docker push默认不推送5BROWSERfirefoxBROWSER$5浏览器类型case分支分发6RELEASE_OLD_VERSIONtrueRELEASE_OLD_VERSION${6:-false}是否同时保留旧版本标签7PLATFORM未传默认PLATFORM${7:-linux/amd64}目标平台默认linux/amd64脚本内部还会额外拼出TAG_VERSION${VERSION}-${BUILD_DATE}即4.48.0-20260909用于定位已经构建好的基础镜像如selenium/node-firefox:4.48.0-20260909。注意命名空间在脚本第 16 行存在NAMESPACE${NAME:-selenium}的二次赋值若通过 Makefile 传入了NAME变量可覆盖默认值。三、版本探测在容器内动态获取 Firefox 与 GeckoDriver 版本发布记录中Firefox version - 142.0.1、GeckoDriver version - 0.37.1并非写死的常量而是由脚本在已经构建好的 node 镜像内运行二进制并解析输出来获取的。firefox分支的对应源码位于 tag_and_push_browser_images.shFIREFOX_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})两个探测命令都遵循同一模式docker run --rm启动临时容器在容器内执行firefox --version或geckodriver --version再用awk提取第三列Firefox或第一行第二列GeckoDriver作为版本号。这意味着标签所声明的版本一定与镜像内真实二进制版本一致从机制上杜绝了标签与内容脱节。随后short_version函数把完整版本裁剪为主次两位function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }因此142.0.1 - 142.0、0.37.1 - 0.37与发布记录中Short Firefox version - 142.0、Short GeckoDriver version - 0.37完全对应。短版本标签的价值在于用户在不关心 Patch 级差异时可以用142.0前缀稳定拉取同一主次版本下的镜像。四、标签体系10 组标签的生成规则与命名语义发布记录的核心价值在于完整展示了 Firefox 镜像的标签矩阵。firefox分支通过FIREFOX_TAGS数组tag_and_push_browser_images.sh按固定规则推导出 10 个标签再对node-firefox和standalone-firefox各打一遍标签形式本次发布的具体值语义${FIREFOX_VERSION}-geckodriver-${GECKODRIVER_VERSION}-grid-${TAG_VERSION}142.0.1-geckodriver-0.37.1-grid-4.48.0-20260909完整锁定浏览器 驱动 Grid 版本 构建日期${FIREFOX_VERSION}-geckodriver-${GECKODRIVER_VERSION}-${BUILD_DATE}142.0.1-geckodriver-0.37.1-20260909浏览器 驱动 构建日期${FIREFOX_VERSION}-${BUILD_DATE}142.0.1-20260909浏览器 构建日期${FIREFOX_SHORT_VERSION}-geckodriver-${GECKODRIVER_SHORT_VERSION}-grid-${TAG_VERSION}142.0-geckodriver-0.37-grid-4.48.0-20260909短版本三要素全锁定${FIREFOX_SHORT_VERSION}-geckodriver-${GECKODRIVER_SHORT_VERSION}-${BUILD_DATE}142.0-geckodriver-0.37-20260909短版本浏览器 驱动 构建日期${FIREFOX_SHORT_VERSION}-${BUILD_DATE}142.0-20260909短版本浏览器 构建日期以上 6 组为必须生成的标签当RELEASE_OLD_VERSIONfalse时还会追加 4 组不含构建日期的标签便于旧发布被新发布覆盖时依然能通过简化标签取到最新镜像追加标签形式本次发布的具体值${FIREFOX_VERSION}-geckodriver-${GECKODRIVER_VERSION}142.0.1-geckodriver-0.37.1${FIREFOX_VERSION}142.0.1${FIREFOX_SHORT_VERSION}-geckodriver-${GECKODRIVER_SHORT_VERSION}142.0-geckodriver-0.37${FIREFOX_SHORT_VERSION}142.0发布记录中RELEASE_OLD_VERSION传的是true第 6 个参数因此本次输出只包含前 6 组、共 12 条Tagged日志。这 10 组标签构成了一个从“完全锁定”到“简略可迁移”的梯度CI 环境可用最长的142.0.1-geckodriver-0.37.1-grid-4.48.0-20260909保证环境绝对一致日常调试则可以直接使用142.0.1或142.0。五、retag 函数docker tag、docker push 与镜像晋升每条Tagged日志都来自retag函数tag_and_push_browser_images.sh其核心逻辑分两种路径普通路径PROMOTE_TAGSfalse即本发布记录场景先执行docker tag ${NAMESPACE}/${__image}:${TAG_VERSION} ${NAMESPACE}/${__image}:${__tag}为已有镜像添加新标签若PUSH_IMAGEtrue再追加docker push。晋升路径PROMOTE_TAGStrue当发布流程选择直接推广测试过的镜像而不是重新构建时本地没有源镜像改用docker buildx imagetools create在 registry 之间直接创建多架构 manifest 索引。此时若设置了PROMOTE_GHCR_NAMESPACE还会在同一调用中把镜像同步镜像到 GHCR。Makefile 中将该脚本注册为正式发布目标见 Makefiletag_and_push_browser_images聚合五类浏览器的标签目标tag_and_push_firefox_images即执行./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)与发布记录第一行的命令完全同构另有tag_and_push_browser_images_ghcr目标通过docker buildx imagetools create批量镜像到 GHCR 命名空间。六、镜像内容从何而来NodeFirefox 构建链路标签背后的node-firefox镜像并非空壳其内容由 NodeFirefox/Dockerfile 在构建期装配主要包含三部分Firefox 本体Dockerfile 第 21-70 行根据架构与版本号选择安装路径。对于 Firefox 136 及以上的数字版本142 满足该条件优先从 Mozilla 官方 CDN 下载firefox-142.0.1的.deb安装包amd64 下载linux-x86_64包aarch64 下载linux-aarch64包若返回 404 则回退到.tar.bz2源码包latest、beta-latest、esr-latest等通道则走 install-firefox-apt.sh 配置的 Mozilla apt 源含 GPG 指纹35BAA0B33E9EB396F59CA838C0BA5CE6DC6315A3校验与Pin-Priority: 1000的 apt 偏好。语言包由 get_lang_package.sh 从https://ftp.mozilla.org/pub/firefox/releases/$VERSION/linux-x86_64/xpi/批量拉取并重命名为langpack-langfirefox.mozilla.org.xpi放入distribution/extensions目录。GeckoDriverDockerfile 第 75-86 行动态解析 GitHub 上 geckodriver 的latest发布地址按架构下载geckodriver-${GK_VERSION}-linux64amd64或-linux-aarch64aarch64压缩包解压到/opt/geckodriver-${GK_VERSION}并软链到/usr/bin/geckodriver同时提供GECKODRIVER_VERSION构建参数允许固定版本。浏览器元信息构建末尾将firefox、实际版本号写入/opt/selenium/browsers/firefox/并生成{moz:firefoxOptions: {binary: ${SE_BROWSER_BINARY_LOCATION:-/usr/bin/firefox}}}供 Grid 节点注册时上报能力。这正是发布记录中版本探测命令能够工作的前提镜像内/usr/bin/firefox与/usr/bin/geckodriver均已就位docker run ... firefox --version才能输出真实的142.0.1。七、如何基于标签选择镜像并运行NodeFirefox 镜像文档 总结了标签结构与用法。按发布记录生成的标签推荐的使用方式是创建网格网络docker network create grid启动 Hub暴露 4442-4444 端口docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest固定到本次发布的 Firefox 142 镜像启动 Node务必使用--shm-size2gdocker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-firefox:142.0.1-geckodriver-0.37.1-grid-4.48.0-20260909将 WebDriver 测试指向http://localhost:4444可选访问http://localhost:7900/?autoconnect1resizescalepasswordsecret通过 noVNC 查看容器内浏览器画面。标签选择建议遵循“完全锁定的标签用于生产与 CI简化标签用于日常开发”的原则。若同时对比同一发布周期的 Chrome for Testing 发布记录 可以看到不同浏览器分支共享完全相同的脚本与标签推导逻辑只是探测命令与镜像名不同Chrome for Testing 用google-chrome --version且需显式传--platform这保证了整个项目多浏览器发布的标签体系一致性。八、结语一次发布记录背后的一致性设计从 CHANGELOG/4.48.0/firefox_142.md 这 21 行输出中可以完整还原 docker-selenium 浏览器镜像发布的设计思想版本号不手工维护而由容器内二进制探测得出标签按固定排列组合自动推导短版本裁剪让用户可以按主次版本稳定拉取RELEASE_OLD_VERSION控制旧标签是否保留PROMOTE_TAGS支撑“推广已测试镜像”的发布策略。理解这套机制后无论是排查镜像标签缺失、自定义构建浏览器镜像还是复现某个历史版本环境都能快速定位到正确的标签与对应源码。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 142 发布日志解析浏览器镜像标签的生成机制与选用指南docker selenium 4.48.0 Chrome 142 发布日志解析浏览器镜像标签的生成机制与选用指南 本文以 docker selenium 仓测试后端云原生容器编排可观测性docker-selenium 4.48.0 发布 Chrome for Testing 142镜像标签生成与多标签发布流程全解析docker selenium 4.48.0 发布 Chrome for Testing 142镜像标签生成与多标签发布流程全解析 本指南围绕 docker测试后端云原生容器编排可观测性docker-selenium 浏览器镜像多重标签发布机制解析——以 Selenium Grid 4.48.0 Chrome 104 发布记录为例docker selenium 浏览器镜像多重标签发布机制解析——以 Selenium Grid 4.48.0 Chrome 104 发布记录为例 本文以仓库中测试后端云原生容器编排可观测性上一篇如何5分钟快速上手nba-goNBA实时数据CLI工具完整指南下一篇使用 Novu Framework 的 Devtool 脚本从 OpenAPI 文档中提取 JSON Schema创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表