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