:從 Firefox 106.0.5 的發(fā)布記錄解讀 Selenium Grid 4.30.0 鏡像 Tag 體系)
測試后端云原生容器編排可觀測性【免費下載鏈接】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.30.0/firefox_106.md 為主線完整還原 docker-selenium 項目在發(fā)布 Selenium Grid 4.30.0 時如何為 Firefox 106.0.5 鏡像執(zhí)行自動打標與推送并深入解析 tag_and_push_browser_images.sh 腳本的版本探測、短版本派生、多 Tag 生成與推送機制。讀完本文你將掌握node-firefox/standalone-firefox鏡像 Tag 的命名規(guī)則、歸檔 CHANGELOG 文件的閱讀方法以及如何在跨瀏覽器測試或版本鎖定場景中精準拉取并運行指定 Firefox 版本鏡像。歸檔 CHANGELOG 文件是什么一次瀏覽器鏡像發(fā)布的完整快照docker-selenium 倉庫在CHANGELOG/目錄下為每一個 Grid 發(fā)布版本保留一組瀏覽器版本記錄文件命名形如firefox_106.md表示 Firefox 106 系列。每當一次發(fā)布執(zhí)行瀏覽器鏡像打標后腳本輸出會被記錄成 Markdown 文件歸檔。由于當前最新版本目錄只保留最近的 Grid 版本歷史版本會被 CHANGELOG/generate-matrix-readme.py 中的archive_old_versions()邏輯移動到archived/子目錄這就是本文主角位于CHANGELOG/archived/4.30.0/的原因。該文件本質上是一段可直接復現(xiàn)的終端輸出記錄了以下關鍵事實執(zhí)行命令./tag_and_push_browser_images.sh 4.30.0 20250323 selenium false firefox trueSelenium Grid 版本4.30.0-20250323Grid 主版本 構建日期Firefox 版本106.0.5短版本106.0GeckoDriver 版本0.36.0短版本0.36生成的全部鏡像 Tag對node-firefox和standalone-firefox各 6 個共 12 個完整還原Firefox 106.0.5 在 Grid 4.30.0 的全部鏡像 Tag歸檔記錄中生成的 12 個 Tag 按命名維度可劃分為三組每組同時打給 Node 與 Standalone 鏡像維度Tag 示例node 與 standalone 前綴各一份全版本 驅動 Grid 標識106.0.5-geckodriver-0.36.0-grid-4.30.0-20250323全版本 驅動 構建日期106.0.5-geckodriver-0.36.0-20250323全版本 構建日期106.0.5-20250323短版本 短驅動 Grid 標識106.0-geckodriver-0.36-grid-4.30.0-20250323短版本 短驅動 構建日期106.0-geckodriver-0.36-20250323短版本 構建日期106.0-20250323完整輸出如下selenium為命名空間node-firefox與standalone-firefox各打 6 個 Tag./tag_and_push_browser_images.sh 4.30.0 20250323 selenium false firefox true Tagging images for browser firefox, version 4.30.0, build date 20250323, namespace selenium Selenium Grid version - 4.30.0-20250323 Firefox version - 106.0.5 Short Firefox version - 106.0 GeckoDriver version - 0.36.0 Short GeckoDriver version - 0.36 Tagged selenium/node-firefox:106.0.5-geckodriver-0.36.0-grid-4.30.0-20250323 Tagged selenium/standalone-firefox:106.0.5-geckodriver-0.36.0-grid-4.30.0-20250323 Tagged selenium/node-firefox:106.0.5-geckodriver-0.36.0-20250323 Tagged selenium/standalone-firefox:106.0.5-geckodriver-0.36.0-20250323 Tagged selenium/node-firefox:106.0.5-20250323 Tagged selenium/standalone-firefox:106.0.5-20250323 Tagged selenium/node-firefox:106.0-geckodriver-0.36-grid-4.30.0-20250323 Tagged selenium/standalone-firefox:106.0-geckodriver-0.36-grid-4.30.0-20250323 Tagged selenium/node-firefox:106.0-geckodriver-0.36-20250323 Tagged selenium/standalone-firefox:106.0-geckodriver-0.36-20250323 Tagged selenium/node-firefox:106.0-20250323 Tagged selenium/standalone-firefox:106.0-20250323注意命令的第六個參數為true即RELEASE_OLD_VERSIONtrue。這意味著 Firefox 106 屬于在更早的 Grid 版本中已經發(fā)布過的“舊版本”因此腳本跳過了純版本號 Tag如106.0.5、106.0等這些 Tag 已指向早期構建只為本次發(fā)布追加帶構建日期或 Grid 版本標識的新 Tag。若RELEASE_OLD_VERSIONfalse新瀏覽器版本首次發(fā)布每個鏡像還會額外生成 4 個純版本類 Tag。為什么同一份記錄要跨多個 Grid 版本持續(xù)存在對比同目錄下的 CHANGELOG/4.48.0/firefox_106.md 可以發(fā)現(xiàn)Firefox106.0.5在 Grid4.48.0-20260909中再次被打標但此時配套的 GeckoDriver 已升級為0.37.1短版本0.37。這說明該 CHANGELOG 矩陣的核心設計意圖是——瀏覽器版本可以被“釘住”pin而 Selenium Grid 核心與驅動版本可以持續(xù)演進。這正是 CHANGELOG/README.md 中聲明的動機既為使用方提供最新的 Grid 功能又允許因瀏覽器兼容性問題鎖定特定瀏覽器版本。README 同時明確提示并非所有 Grid × 瀏覽器組合都經過完整測試使用者需基于自身測試需求評估。打標腳本源碼解析版本如何被探測、Tag 如何被生成歸檔輸出由 tag_and_push_browser_images.sh 生成。腳本共接收 7 個位置參數參數含義默認值$1VERSIONSelenium Grid 版本如4.30.0無$2BUILD_DATE構建日期YYYYMMDD無$3NAMESPACE鏡像命名空間無實際取NAME$4PUSH_IMAGE是否推送false$5BROWSER瀏覽器類型firefox/chrome/chromium/edge/chrome-for-testing無$6RELEASE_OLD_VERSION是否為已發(fā)布過的舊版本false$7PLATFORM平臺僅 chrome/chrome-for-testing 使用linux/amd64對 firefox 分支而言版本探測依賴在剛構建好的鏡像內直接執(zhí)行二進制取版本號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})其中TAG_VERSION${VERSION}-${BUILD_DATE}即先取selenium/node-firefox:4.30.0-20250323這個 Grid 標識的基礎 Tag再從容器內解析firefox --version與geckodriver --version的真實輸出版本號。短版本由short_version()函數派生——按.拆分后取前兩段106.0.5→106.00.36.0→0.36。打標通過retag()函數完成其行為分兩種模式常規(guī)模式PROMOTE_TAGS未開啟docker tag本地鏡像 可選docker push對應命令第四個參數false即本次僅打標不推送鏡像推廣模式PROMOTE_TAGStrue直接用docker buildx imagetools create在 registry 之間復制 manifest避免docker pull只帶回單架構鏡像的問題可選通過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_upgrade_version目標Makefile展示了發(fā)布前的驗證套路依次在standalone-firefox容器內執(zhí)行selenium-server.jar info --version、firefox --version、geckodriver --version確保 Grid 服務端、瀏覽器、驅動三方版本一致后再打標。Firefox 106.0.5 與 GeckoDriver 0.36.0 如何進入鏡像打標腳本探測到的版本來自 NodeFirefox/Dockerfile 的構建產物。該 Dockerfile 通過兩個可覆蓋的構建參數控制版本FIREFOX_VERSION默認latest按架構amd64 →x86_64arm64 →aarch64從 Mozilla 官方下載地址取對應版本安裝包優(yōu)先.deb若返回 404 則回退.tar.bz2GECKODRIVER_VERSION默認latest先解析 GeckoDriver 最新 release 的實際版本再按架構選擇linux64或linux-aarch64包下載解壓并軟鏈接到/usr/bin/geckodriver。安裝腳本 NodeFirefox/install-firefox-package.sh 根據下載 URL 后綴分派三種安裝路徑.deb直裝、.tar.bz2/.tar.xz解壓到/opt/firefox-版本后軟鏈接。構建尾聲還會將瀏覽器信息寫入/opt/selenium/browsers/firefox/name、version、binary_location供 Grid Node 配置與日志使用同時聲明SE_OTEL_SERVICE_NAMEselenium-node-firefox與SE_NODE_ENABLE_MANAGED_DOWNLOADStrue環(huán)境變量。因此打標腳本取到的106.0.5/0.36.0就是容器內實際運行的二進制版本Tag 與真實內容嚴格一致。如何拉取并使用 Firefox 106.0.5 鏡像以 Node 模式加入 Grid Hub參考 docs/docker-hub/node-firefox.md 的 Hub-and-Node 拓撲先建網絡再啟動 Hub最后讓 Node 通過事件總線容器名自動注冊docker 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:106.0.5-geckodriver-0.36.0-grid-4.30.0-20250323若使用 Windows PowerShell換行符需替換為反引號。隨后將 WebDriver 測試指向http://localhost:4444需要觀察容器內畫面時訪問 noVNC 界面http://localhost:7900/?autoconnect1resizescalepasswordsecret默認密碼secret。用完可執(zhí)行docker network rm grid清理。以 Standalone 模式一鍵運行參考 docs/docker-hub/standalone-firefox.md單容器即可承載完整 Grid 與 Firefoxdocker run -d -p 4444:4444 -p 7900:7900 --shm-size2g \ selenium/standalone-firefox:106.0.5-geckodriver-0.36.0-grid-4.30.0-20250323重要前提所有含瀏覽器的鏡像都必須添加--shm-size2g使用宿主機共享內存否則瀏覽器進程極易因/dev/shm空間不足而崩潰。Tag 選擇建議按 docs/docker-hub/node-firefox.md 的說明Tag 通用結構為selenium/node-firefox-Major.Minor.Patch-YYYYMMDD selenium/node-firefox-browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD兩者可自由組合即本記錄生成的 6 種維度。日常使用建議避免latest改用完整 Tag 顯式釘住瀏覽器、驅動與 Grid 版本若只需取某個發(fā)布周期內“最近一次”的 Firefox 106 構建用106.0.5-20250323這類帶構建日期的精簡 Tag 即可。歸檔矩陣的維護機制與閱讀方式CHANGELOG/generate-matrix-readme.py 負責把每個firefox_106.md這類文件匯總成 CHANGELOG/README.md 中的“Selenium Grid x Browser Version Matrix”矩陣表。其工作流程分三步歸檔archive_old_versions()將CHANGELOG/下非最新版本目錄移動到archived/所以 4.30.0 的記錄位于archived/下掃描scan_changelog()用正則([\w-])_(\d)\.md解析出每個 Grid 版本下覆蓋的瀏覽器與版本集合生成generate_readme()按瀏覽器分組輸出表格每個 ? 鏈接到對應記錄文件。因此閱讀方式很簡單在矩陣表的 Firefox 分區(qū)找到 Grid 版本4.30.0與瀏覽器版本106交叉處的 ?點擊即可進入本文解析的這份發(fā)布快照。若你的測試需要 Firefox 106 而 Grid 核心希望用更新的版本可在矩陣中橫向比較多個 Grid 版本下 Firefox 106 記錄中 GeckoDriver 的差異如 4.30.0 用0.36.04.48.0 用0.37.1據此選擇最匹配的組合。小結一份看似只有 21 行的歸檔 CHANGELOG 文件背后串聯(lián)起 docker-selenium 的三條核心鏈路構建NodeFirefox/Dockerfile 將 Firefox 106.0.5 與 GeckoDriver 0.36.0 固化進鏡像、打標tag_and_push_browser_images.sh 在容器內探測版本并派生 12 個多維 Tag、使用按 Tag 精確拉取 Node 或 Standalone 鏡像運行測試。掌握這套 Tag 體系即可在跨瀏覽器測試中隨心鎖定瀏覽器版本同時享受 Selenium Grid 持續(xù)更新的能力。贊分享測試后端云原生容器編排可觀測性【免費下載鏈接】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 瀏覽器鏡像標簽體系深度解析以 Firefox 106.0.5 Selenium Grid 4.28.1 發(fā)布記錄為例docker selenium 瀏覽器鏡像標簽體系深度解析以 Firefox 106.0.5 Selenium Grid 4.28.1 發(fā)布記錄為例 本篇測試后端云原生容器編排可觀測性Selenium Docker 鏡像 Firefox 122.0.1 發(fā)布記錄深度解讀docker-selenium 4.28.1 的鏡像打標流程與 Tag 體系Selenium Docker 鏡像 Firefox 122.0.1 發(fā)布記錄深度解讀docker selenium 4.28.1 的鏡像打標流程與 Tag測試后端云原生容器編排可觀測性opencodex Release Train 實戰(zhàn)PR 136 137 的 dev 集成、Timer-Leak 修復與 GUI i18n 門禁對齊opencodex Release Train 實戰(zhàn)PR 136 137 的 dev 集成、Timer Leak 修復與 GUI i18n 門禁對齊 本文測試后端云原生容器編排可觀測性上一篇【親測免費】 探秘JavyJavaScript轉WebAssembly的利器下一篇Ultimate Vocal Remover三步出干凈伴奏創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考