Selenium 的持續整合實作
此文件先前位於 wiki 上
一般架構
我們有許多執行 Ubuntu 的 Google Compute Engine 虛擬機器,目前託管在 {0..29}.ci.seleniumhq.org - 它們已設定可公開定址的 DNS,以指向 ab.{0..29}.ci.seleniumhq.org,以便 cookie 測試可以執行子網域查詢。
其中一台機器 ci.seleniumhq.org 正在執行 jenkins。如果您想要 jenkins 的登入權限,請聯絡 juangj。「Build All Java」工作會輪詢 SCM 以檢查變更,並執行以下操作
- 對「release」目標、任何將要執行的測試以及執行這些測試所需的任何構件 (例如 IEDriverServer 可執行檔) 執行全新建置
- 將整個建置的工作目錄壓縮並發布到 http://ci.seleniumhq.org/selenium-trunk-r${REVISION}.tgz - 這稍後將由測試執行使用
- 將 selenium-server-standalone jar 發布到 http://ci.seleniumhq.org/selenium-server-standalone-r${REVISION}.tgz - 當執行測試時,SauceLabs 會直接複製下來。
- 將 IEDriverServer 壓縮並發布到 http://ci.seleniumhq.org/IEDriverServer-Win32-r${REVISION}.zip - SauceLabs 會直接複製下來以執行 IE 測試。此機器由 1TB 永久磁碟支援,可以容納許多建置構件,但應偶爾清除 (尤其是在區域之間移動磁碟時)。
當此建置成功時,它會針對我們關心的每個作業系統/瀏覽器/測試組合觸發下游建置。它也會觸發下游全新建置,以確保我們的 maven poms 仍然井然有序 ("Maven build")。
除了在與編譯相同的建置節點 (功能強大的 8 核心機器,配備 32GB RAM) 上執行的 "Maven build" 之外,所有下游建置都在個別的建置節點上執行。
下游建置是使用環境變數設定的,如 SauceDriver 類別所示。下游建置從建置主節點下載 selenium-trunk tar,然後執行測試 (應已由「Build All Java」規則編譯)。這些下游建置中有兩個是特殊的;「HtmlUnit Java Tests」和「Small Tests」僅在本機無頭執行。其他則使用 SauceLabs。
關於網路的注意事項:建置節點設定在內部網路 10.1.0/24 上,因此它們之間的網路通訊非常快速且免費。
當非無頭瀏覽器測試執行時,test-file servlet 會將測試檔案託管在由環境變數 (231${EXECUTOR_NUMBER} 和 241${EXECUTOR_NUMBER} - EXECUTOR_NUMBER 目前始終等於 0) 決定的連接埠上。測試使用的主機名稱由環境變數 (ab.${NODE_NAME}.ci.seleniumhq.org,其中 NODE_NAME 在 {0..29} 中) 設定。瀏覽器是使用我們的憑證 (儲存在 Jenkins 範圍的環境變數中,在「System Configuration」頁面上設定) 從 SauceLabs 請求的。Jenkins 目前設定為每次測試執行時並行執行三個測試類別,同樣在「System Configuration」頁面上。
測試已執行,結果會通知 IRC。
感謝 SauceLabs 和 Google 捐贈基礎架構來執行所有這些測試。
常見問題
我想像 Jenkins 一樣在 Sauce 上執行我的測試 (我的測試在 CI 上失敗,但在我的機器上運作良好!)
請參閱 SauceDriver 頁面
我想新增一個新的瀏覽器 (Firefox 發布了新版本!)
Jenkins 沒有範本的好概念。我 (dawagner) 有一些 selenium 腳本可以自動化 Jenkins 的 UI,以使用預設設定建立新工作。如果您想手動執行,以下是大致的步驟
- 尋找您要複製的最相似設定。如果是新的 Firefox 版本,請尋找最新的 firefox (應該有大約 6 個與之關聯的建置:Javascript + Java {Windows,Linux} **{Native,Synthesized}
- 針對這些建置中的每一個,建立一個新工作 (登入後,在首頁左側的選單上)
- 以其他工作的風格命名工作。選取「複製現有工作」,然後輸入您要複製的工作。
- 捲動瀏覽預先填入的工作。取代版本號碼、瀏覽器名稱和任何其他需要取代的詳細資訊。對於 firefox 更新,目前有三個地方您應該取代數字 (「browser_version」欄位,以及「Build Execute Shell」中的兩個)
- 儲存
- 前往「Build All Java」工作,設定它,將您的新建置新增到「Projects to build」欄位,其中列出了許多其他項目。**
如果是 firefox 更新,您可能也想要刪除現有的建置。