1. 程式人生 > >jenkins叢集測試環境原理、部署及常見問題解決

jenkins叢集測試環境原理、部署及常見問題解決

         Jenkins是一個開源專案,它提供了一個容易使用的持續整合系統,並且提供了大量的plugin滿足各式的整合需求。

         因為手裡專案所用到的穩定性和效能測試工具每天手動部署到各臺windows機器上比較浪費時間,所以這裡使用jenkins用於部署測試工具到各個測試機上執行。整套環境需要一箇中心伺服器和若干測試機器組成的slave,這就是jenkins的Master/Slave結構,如下所示:

         在我們下面的使用中,master和slave是通過jnlp協議來通訊的。

Master機器:

我們需要在我們的master機器上安裝jenkins,沒有什麼特殊說明,注意的是安裝包方式同樣可以通過執行安裝目錄下的jenkins.war來啟動jenkins,而預設情況下安裝後會安裝一個名為Jenkins的自動執行的服務。

安裝完後訪問jenkins的根目錄,預設情況下埠是8080(如果要使用其他埠啟動,可以通過命令列”java –jar Jenkins.war –httpPort=80”的方式修改),通過”系統管理”-”管理節點”-“新建節點”

新建節點主要設定遠端目錄已經執行和訪問的方式,注意這裡如果有很多機器,建議遠端工作目錄名稱都一樣,方便管理,如下所示:

         點選儲存,這時候就會在jenkinsnode檢視左側看到建立的slave節點。

下面要做的就是部署真正的slave機器了,點選左側的”test_machine”,這時候會開啟該節點的頁面,複製這個url,一般是形如http://192.168.1.148/computer/test_machine/

, 注意這裡在訪問的時候不要通過 127.0.0.1的方式訪問,因為這樣可能會導致後面所用到的jnlp檔案中master地址也是127.0.0.1,從而導致slave機器上啟動失敗。

Slave機器:

         首先需要在slave機器上安裝java環境和.NetFrameWork環境,然後在瀏覽器中訪問上面拷貝的url,這裡提供了三種方式執行slave,我這裡使用的第二種方式:

          

 備註:slave.jar的位置如   http://192.168.1.148/jnlpJars/slave.jar

         這時候有可能出現如下的錯誤:

這是因為從 Java 7 Update51 開始,如果應用程式沒有證書(例如未簽名應用程式)或缺少應用程式名稱和發行者資訊,預設情況下會被阻止。執行此型別的應用程式可能不安全並存在較高級別的風險。

         解決的方法是通過windows開始選單項開啟java控制面板,然後把master機器的url新增到安全提示的例外網站。

再次執行,則彈出如下的安全警告,允許執行即可。

同時,當執行主機上安裝了多個java版本時並且應用程式被安全設定阻止時,可以取消一些版本,防止一些意想不到的異常。

         執行成功我們能看到連線成功的視窗,而我們繼續檢視可以在設定的遠端工作目錄,c:\remote_jenkins下看到如下的一些檔案jenkins-slave.exe,jenkins-slave.exe.config,slave.exe,jenkins-slave.xml。 我們這裡主要關注jenkins-slave.xml,從下面我們可以看到兩個關鍵節點,executable和arguments,如果你想使用不同的java版本,可以從這裡修改,而從arguments可以看出jnlp協議連線的master主機地址。

         這時候slave機器已經執行起來了,但是我們顯然不想每次都在slave機器上執行一下啟動,所以jenkins又提供了slave的服務,如下所示進行安裝。

上面說過機器上需要. NetFrameWork環境,我理解是用於安裝windows服務用的,當你沒有安裝時會提示如下錯誤:

但是上面的提示卻誤導了我,因為一般都會版本越新越好,但是在xp環境上,最終只有安裝2.0版本才能正常,其他所有版本安裝後安裝服務都會提示如下一些錯誤提示:

 

 當然上面slave機器上所有進行操作的前提是設定了遠端工作目錄並且的確在你遠端的物理機上建立了該目錄,如果沒有設定遠端工作目錄,會錯誤提示如下:


如果配置了遠端工作目錄,但是salve機器上沒有該目錄,則彈出如下錯誤:

         如果slave無法連線,檢視遠端工作目錄下的jenkins-slave.err.log,

這是因為我在master機器上把該slave的名字改了,但是下發到該slave上的jenkins-slave.xml還是舊的資訊。

還有一種情況就是在在你master機器ip不斷變化的情況下,可能存在即使新建了新的slave節點,但是啟動slave的時候失敗的情況,這時候最好的方式是看一下該節點的slave-agent.jnlp檔案中的內容,然後手動修改中間的一些地址資訊,然後手動javaws執行該檔案即可。另外一種方法是jenkins的系統管理面板下修改“Jenkins Location”的” Jenkins URL”。

檔案下發及執行:

         Jenkins的外掛安裝:

         Jenkins的外掛安裝支援兩種方式:線上安裝和離線安裝,進入”系統管理”-“管理外掛”-“可選外掛”列表中選擇外掛然後點選列表下方的安裝,這是線上安裝方式,但是經常會出現下載安裝超時的情況。

Copy To Slave Plugin:

該外掛用於將檔案傳送到slave機器的工作空間中,使用方式為在專案配置中,會有一個構建環境的區域,選擇對應檔案or目錄即可(注意:該外掛對中文支援上存在問題,所以所有的資源都請使用英文名)

         Windows Exe Runner Plugin:

         該外掛用於在下發相關的exe檔案到slave機器上之後執行,安裝該外掛之後,在jenkins伺服器的”系統管理”-“系統設定”如下顯示,注意目錄為slave機器上的絕對路徑。

 

         WorkSpace Cleanup Plugin:

         該外掛用於在任務執行前或者執行後進行slave工作空間的清理。

如上,所有環境準備都已經完成,執行構建即可,同時如果需要指定到slave機器執行,則在構建設定中設定對應的機器即可。

         而如果執行的程式在slave機器上關閉,則構建會立即顯示失敗,而如果通過左側的構建進度右側的關閉按鈕,則slave機器上執行的程式也會立即關閉。

參考資料:

Installing Jenkins as a Windows service -Jenkins - Jenkins Wiki

Distributed builds - Jenkins - Jenkins Wiki

hudson-ci.org/docs/HudsonArch-Execution.pdf

Windows Exe Runner Plugin - Jenkins -Jenkins Wiki

Copy To Slave Plugin - Jenkins - JenkinsWiki