ARTICLE DETAIL

资讯详情

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

docker-selenium 4.48.0 发布解析:Firefox 134.0.2 + GeckoDriver 0.37.1 镜像标签生成全流程

docker-selenium 4.48.0 发布解析:Firefox 134.0.2 + GeckoDriver 0.37.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/4.48.0/firefox_134.md 记录的发布日志为主体深入讲解 docker-selenium 项目在发布 Firefox 浏览器镜像时如何通过 tag_and_push_browser_images.sh 自动探测浏览器与驱动版本、组合生成 20 个镜像标签并完成打标/推送。读完本文你将掌握该脚本 6 个位置参数的含义、标签命名规则含精简版与完整版的差异、docker tag与docker buildx imagetools两条打标路径的取舍以及node-firefox/standalone-firefox镜像的构建与使用方式。一、一条发布日志记录了什么firefox_134.md 全文是一段脚本执行日志记录了一次真实的 Firefox 浏览器镜像发布过程./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 - 134.0.2 Short Firefox version - 134.0 GeckoDriver version - 0.37.1 Short GeckoDriver version - 0.37 Tagged selenium/node-firefox:134.0.2-geckodriver-0.37.1-grid-4.48.0-20260909 Tagged selenium/standalone-firefox:134.0.2-geckodriver-0.37.1-grid-4.48.0-20260909 ...这段日志包含了四个关键事实信息值来源Selenium Grid 版本4.48.0-20260909第一个参数4.48.0与第二个参数20260909拼接Firefox 版本134.0.2短版本 134.0脚本在容器内执行firefox --version探测GeckoDriver 版本0.37.1短版本 0.37脚本在容器内执行geckodriver --version探测命名空间selenium第三个参数日志中一共输出了 20 行Taggednode-firefox 与 standalone-firefox 各 10 个标签对应脚本中对node-firefox和standalone-firefox两个镜像执行的两轮相同打标循环。这段日志本质上是对 tag_and_push_browser_images.sh 中 firefox 分支的一次真实运行回放。二、脚本位置参数逐一解析脚本前 9 行定义了全部可配置输入tag_and_push_browser_images.shVERSION$1 # 例如 4.48.0Selenium Grid 发布版本 BUILD_DATE$2 # 例如 20260909构建日期YYYYMMDD NAMESPACE$3 # 例如 selenium镜像命名空间 PUSH_IMAGE${4:-false} # 是否 push默认 false BROWSER$5 # firefox / chrome / chromium / edge / chrome-for-testing RELEASE_OLD_VERSION${6:-false} # 是否同时为旧版本打标签默认 false PLATFORM${7:-linux/amd64} # 探测版本时使用的平台默认 linux/amd64对应日志首行命令./tag_and_push_browser_images.sh 4.48.0 20260909 selenium false firefox true即VERSION4.48.0、BUILD_DATE20260909、NAMESPACEselenium、PUSH_IMAGEfalse、BROWSERfirefox、RELEASE_OLD_VERSIONtrue。注意日志中的true是第 6 个参数意味着本次发布没有额外生成不带grid/构建日期的老式兼容标签详见第四节。此外还有两个由环境变量控制的选项PROMOTE_TAGS默认 falsetrue 时表示镜像已在测试阶段构建并推送过发布阶段只做 registry 之间的标签搬运不再重新构建PROMOTE_GHCR_NAMESPACE默认空设置后在同一次调用中同步镜像到 GHCR 命名空间。项目通过 Makefile 将这些参数包装成目标例如tag_and_push_firefox_images目标实际执行的就是与日志相同的调用tag_and_push_firefox_images: ./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)三、版本探测在容器内读取真实版本打标前脚本需要知道镜像里实际装的 Firefox 与 GeckoDriver 版本而不是依赖外部元数据。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})它先以selenium/node-firefox:4.48.0-20260909为镜像运行临时容器分别执行firefox --version与geckodriver --version再用awk提取第三列/第一行第二列得到精确版本号。随后通过short_version()函数tag_and_push_browser_images.sh截取主版本.次版本作为短版本function short_version() { local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }于是 134.0.2 → 134.00.37.1 → 0.37。chromium、chrome、edge 分支采用同样的容器内探测模式只是命令与 awk 列位不同这正是标签永远与镜像真实内容一致的保证。四、标签命名规则20 个标签从哪来以日志中 Firefox 134.0.2 / GeckoDriver 0.37.1 为例FIREFOX_TAGS数组共 10 个标签tag_and_push_browser_images.sh随后对node-firefox与standalone-firefox各打一遍共 20 个FIREFOX_TAGS( # 完整版浏览器驱动Grid日期 ${FIREFOX_VERSION}-geckodriver-${GECKODRIVER_VERSION}-grid-${TAG_VERSION} # 浏览器驱动日期 ${FIREFOX_VERSION}-geckodriver-${GECKODRIVER_VERSION}-${BUILD_DATE} # 浏览器日期 ${FIREFOX_VERSION}-${BUILD_DATE} # 短版本浏览器驱动Grid日期 ${FIREFOX_SHORT_VERSION}-geckodriver-${GECKODRIVER_SHORT_VERSION}-grid-${TAG_VERSION} # 浏览器驱动日期短版本 ${FIREFOX_SHORT_VERSION}-geckodriver-${GECKODRIVER_SHORT_VERSION}-${BUILD_DATE} # 浏览器日期短版本 ${FIREFOX_SHORT_VERSION}-${BUILD_DATE} )其中TAG_VERSION${VERSION}-${BUILD_DATE}即4.48.0-20260909。将变量代入后得到日志中的前 6 个标签例如selenium/node-firefox:134.0.2-geckodriver-0.37.1-grid-4.48.0-20260909 selenium/node-firefox:134.0.2-geckodriver-0.37.1-20260909 selenium/node-firefox:134.0.2-20260909 selenium/node-firefox:134.0-geckodriver-0.37-grid-4.48.0-20260909 selenium/node-firefox:134.0-geckodriver-0.37-20260909 selenium/node-firefox:134.0-202609094.1 RELEASE_OLD_VERSION 控制下的兼容标签当第 6 个参数为false时tag_and_push_browser_images.sh数组会追加 4 个不带 Grid 版本与构建日期的标签FIREFOX_TAGS( ${FIREFOX_VERSION}-geckodriver-${GECKODRIVER_VERSION} # 134.0.2-geckodriver-0.37.1 ${FIREFOX_VERSION} # 134.0.2 ${FIREFOX_SHORT_VERSION}-geckodriver-${GECKODRIVER_SHORT_VERSION} # 134.0-geckodriver-0.37 ${FIREFOX_SHORT_VERSION} # 134.0 )这是为兼容旧版使用习惯而保留的简化标签。仓库 CI 中的 tests/build-backward-compatible/bootstrap.sh 会以RELEASE_OLD_VERSIONtrue运行并校验这些旧标签仍可正常解析防止向后兼容性回归。而 firefox_134.md 日志中第 6 个参数为true因此只输出了前 6 组每组两个镜像共 12 行Tagged日志实际 20 行是包含了完整 10 个标签的输出说明该日志对应RELEASE_OLD_VERSIONfalse的完整发布路径。五、打标与推送docker tag 与 buildx imagetools 两条路径retag()函数tag_and_push_browser_images.sh是打标的核心它根据PROMOTE_TAGS走两条完全不同的路径常规路径本地镜像打标docker tag ${NAMESPACE}/${__image}:${TAG_VERSION} ${NAMESPACE}/${__image}:${__tag} if [ ${PUSH_IMAGE} true ]; then docker push ${NAMESPACE}/${__image}:${__tag} fi先以TAG_VERSION为源标签docker tag出目标标签再按需docker push。日志中PUSH_IMAGEfalse因此只执行了打标未推送。发布晋升路径registry 间打标docker buildx imagetools create ${__targets[]} ${__source}当PROMOTE_TAGStrue时镜像已在此前测试阶段构建并发布过本轮只是把测试验证过的 manifest 打上发布标签不再重新构建。脚本注释明确指出此时本地 Docker 存储是空的docker pull只能拉取当前架构而docker buildx imagetools直接基于 manifest index 在 registry 之间操作可以完整保留多架构特性。若设置了PROMOTE_GHCR_NAMESPACE会在同一次调用中额外为目标仓库GHCR也创建同样的标签。六、Firefox 镜像的构建内容从 Dockerfile 看镜像内部被docker run探测版本的node-firefox镜像其内容由 NodeFirefox/Dockerfile 定义它基于node-base构建主要包含三部分1. Firefox 安装逻辑。通过FIREFOX_VERSION、FIREFOX_DOWNLOAD_URL、FIREFOX_LANG_VERSION三个构建参数控制NodeFirefox/Dockerfile对latest/beta-latest/nightly-latest/devedition-latest/esr-latest走 apt 安装调用 install-firefox-apt.sh对具体版本号如 134.0.2走 Mozilla CDN 下载.deb或.tar.bz2包再由 install-firefox-package.sh 完成安装.deb直接apt-get install.tar.bz2/.tar.xz解压到/opt/firefox-${FIREFOX_VERSION}并软链到/usr/bin/firefox安装后调用 get_lang_package.sh 下载语言包最后apt-get upgrade修复依赖 CVE。2. GeckoDriver 安装NodeFirefox/Dockerfile默认GECKODRIVER_VERSIONlatest时通过 GitHub release 重定向探测最新版本号按架构下载geckodriver-${GK_VERSION}-linux64或linux-aarch64包解压到/opt/geckodriver-$GK_VERSION并软链为/usr/bin/geckodriver。3. 浏览器信息导出NodeFirefox/Dockerfile构建时把firefox名称、版本号和moz:firefoxOptions.binary模板写入/opt/selenium/browsers/firefox/目录供 Selenium Grid 节点启动时生成 capability 配置。七、如何使用这两个镜像运行 Firefox 自动化日志中打标的node-firefox与standalone-firefox对应两种运行形态仓库在 docs/docker-hub/node-firefox.md 给出了完整示例。Node 模式接入 Hub 组成分布式 Griddocker network create grid docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest docker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-firefox:134.0.2-geckodriver-0.37.1-grid-4.48.0-20260909Standalone 模式单容器内含完整 Grid暴露 4442-4444 端口docker run -d -p 4442-4444:4442-4444 --shm-size2g \ selenium/standalone-firefox:134.0.2-geckodriver-0.37.1-grid-4.48.0-20260909浏览器容器务必使用--shm-size2g以提供足够的共享内存docs 中明确提示。随后将 WebDriver 测试指向http://localhost:4444即可可选地通过http://localhost:7900/?autoconnect1resizescalepasswordsecretVNC观察容器内浏览器。仓库根目录的 docker-compose-v3.yml 提供了用 Compose 编排 Hub/Node 的现成模板只需将镜像 tag 替换为本篇解析的完整版本即可锁定浏览器与 Grid 版本。八、发布流程中的位置从 CHANGELOG 到测试验证CHANGELOG/4.48.0 目录下每个浏览器版本如 firefox_153.md都对应一份同格式的发布日志说明每个版本都经过同一套脚本的完整打标流程。在项目发布流水线中构建并测试node-firefox/standalone-firefox等镜像由 Makefile 的tag_and_push_firefox_images目标调用本脚本完成多标签生成与推送tests/build-backward-compatible/bootstrap.sh 以RELEASE_OLD_VERSIONtrue复跑打标并验证旧式标签可用各浏览器标签生成完毕后tag_and_push_browser_images汇总目标Makefile确保五种浏览器chrome、chrome-for-testing、chromium、edge、firefox标签齐全再由tag_and_push_browser_images_ghcrMakefile把本地存在的全部标签镜像同步到 GHCR。九、总结firefox_134.md 虽短却是理解 docker-selenium 浏览器镜像发布机制的浓缩入口一条命令即完成了容器内版本探测 → 短版本截取 → 10 个标签组合 → 双镜像打标的完整闭环。实际使用时你既可以用selenium/node-firefox:134.0.2-geckodriver-0.37.1-grid-4.48.0-20260909这类完整标签精确定位一个不可变的镜像组合也可以用selenium/node-firefox:134.0这类短标签获得同主版本内的最新发布选择哪种取决于你对版本可控性与更新便利性的权衡。赞分享测试后端云原生容器编排可观测性【免费下载链接】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点击查看免费下载相关推荐N_m3u8DL-RE 完整指南一条命令搞定 DASH、HLS 与直播录制N_m3u8DL RE 完整指南一条命令搞定 DASH、HLS 与直播录制 N_m3u8DL RE 是一款跨平台的流媒体下载工具一条命令即可下载 DASH测试后端云原生容器编排可观测性docker-selenium 4.48.0 发布记录Firefox 118.0.2 与 GeckoDriver 0.37.1 镜像标签体系全解析docker selenium 4.48.0 发布记录Firefox 118.0.2 与 GeckoDriver 0.37.1 镜像标签体系全解析 本文基于测试后端云原生容器编排可观测性Primer CSS 标签系统实战指南labels bundle 的引入、构建与 IssueLabel 样式解析Primer CSS 标签系统实战指南 labels bundle 的引入、构建与 IssueLabel 样式解析 导读 本文以 Primer CSS 仓库中测试后端云原生容器编排可观测性上一篇GitHub_Trending/fron/frontend模块化开发提高救援系统代码可维护性下一篇5个AI技能让你的Obsidian笔记效率提升300%创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表