Jenkins的分佈式構建及部署——節點

目錄

 

一、 什麼是Jenkins的分佈式構建和部署

二、 什麼時候使用節點和作用

三 、節點服務器的要求

四 、節點管理

五、連接節點

 六、job配置

七、問題

1. ant.bat 無法識別

2. 查看錯誤日誌時,提示build.xml:6: Unexpected text " "

3.taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found


一、 什麼是Jenkins的分佈式構建和部署

  Jenkins的分佈式構建,在Jenkins的配置中叫做節點,分佈式構建能夠讓同一套代碼或項目在不同的環境(如:Windows和Linux系統)中編譯、部署等。

二、 什麼時候使用節點和作用

  當我們使用多臺服務器時,並且配置了tomcat或jboss集羣服務,可通過jenkins的節點配置,將jenkins項目發佈在不同服務器上(分佈jenkins工作空間,部署項目到不同服務器的tomcat或jboss),這就形成了jenkins的分佈式。節點服務器不需要安裝jenkins(只需要運行一個slave節點服務),構建事件的分發由master端(jenkins主服務)來執行。

三 、節點服務器的要求

  注意:如果節點主機上不存在JDK,Jenkins會去自動下載,但Oracle對程序自動下載做了限制,會導致下載失敗,然後一直循環這個問題。

  建議:所有Linux或者Windows機器的環境路徑統一(如:JDK、Maven),安裝位置和jenkins所在服務器的JDK和maven必須一致,也就是說jenkins所在服務器和各個節點服務器中的JDK和Maven目錄和文件名都是一樣的。以便於管理、不容易出現問題。

四 、節點管理

1.在jenkins上點擊 “系統管理”--->“管理節點”--->“新建節點”,填寫節點名稱,勾選選項,點擊ok開始新建節點

                   

2.配置信息如下:

 

 配置介紹:

名稱:節點的名稱

併發構建數:使用處理器個數作爲其值會是比較好的選擇(可以點擊後面的?號來查看詳細信息)設置爲0即表示不刪除該節點的配置但是不啓動該節點

遠程工作目錄:操作服務器的目錄

用法:選擇儘可能使用的話,在構建job的時候會優先在該節點上構建;選擇綁定job的話,需要在運行的節點中指定從節點.

啓動方式:launch agent via java Web Start
Host Key Verification Strategy:選擇不驗證(non verifying verification strategy)

可用性:儘量保持代碼在線(這裏僅僅做測試,不考慮性能消耗..)

接下來要在節點屬性中添加一些工具列表,本次實驗至少需要jdk、maven、git,因此必須得在這裏進行配置,地址選擇對應slave服務器上的地址

 4種啓動方式:
Launch agent via Java Web Start 通過Java Web Start連接節點 (適用於所有支持Java程序的系統)
Launch slave via execution of command on the Master 通過主節點的控制檯連接節點
Launch slave agents via SSH 在Unix(包括Linux)機器上通過SSH通道連接節點 (適用於Unix和Linux)
Let Jenkins control this Windows slave as a Windows service 讓Jenkins節點添加到Windows服務中
關於四種啓動方式如何選擇,建議直接單擊Jenkins啓動方式一欄旁邊的問號圖標,會有每種啓動方式的具體解釋。具體,這裏slave server 爲macOS,可以使用Java Web Start ,也可以使用ssh,但由於項目限制,slave機器IP不固定,故選擇了Java Web Start。

Tips:默認第一次打開時,沒有 Launch agent via Java Web Start方式,需要在系統配置中進行配置,Jenkins -> 系統管理 -> Configure Global Security -> Agent -> 指定端口,此時返回配置節點,則可以看到該項。
 

 

五、連接節點

到目前爲止,節點配置工作完成,並已創建成功,新的節點機初始化將處於脫機狀態,接下來需要連接節點。介紹Launch slave agents via Java Web Start連接方式,Launch slave agents on Unix machines via SSH點擊保存後會自動連接。

1.  在節點機上瀏覽器上輸入{IP:prot}/computer/,這裏指的是Master的IP和端口號,可以看到新的節點機初始化將處於脫機狀態

2.  下載 安裝節點服務

點擊節點name,跳轉到下面頁面

Jenkins的分佈式構建及部署——節點

a:需要完成下載工作,下載到slave節點的遠程工作目錄
1.點擊Launch,下載文件爲slave-agent.jnlp
2.將slave-agent.jnlp文件複製到節點機的遠程工作目錄D:\ProgramFiles\jmeter\bin下,(這個路徑就是上面咱們新建的節點時選的工作路徑)


b.下載完成後,就要啓動slave了,有兩種啓動方式,但本質都是將master中的slave-agetn.jnlp文件下載至slave所在的虛擬機,然後運行文件。兩種方式如下:
1.雙擊運行slave-agent.jnlp,
2.如果無法運行,在cmd命令中輸入javaws D:\ProgramFiles\jmeter\bin\slave-agent.jnlp

運行過程:

Jenkins的分佈式構建及部署——節點

點擊運行:

Jenkins的分佈式構建及部署——節點

--顯示Connected,即表示此節點創建成功。

3.  將這個節點加入服務

  上面的窗口關閉或者電腦重啓後,這個節點也就關閉了,所以最好把這個節點加入window服務。     點擊窗口的file菜單,點擊Install as a service,完成

Jenkins的分佈式構建及部署——節點

成功示例:

六、job配置

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

七、問題

1. ant.bat 無法識別

思路:出現這個問題有可能是環境變量配置錯誤,於是第一反應就是重新查看環境的配置,發現沒有問題,然後又運行了幾次,還是失敗,錯誤日誌是一樣的。命令行執行ant -version提示正確,再次證明ant配置正確,但就是提示不識別該命令,於是重新整理了一下思路,思考了一下這個項目需要的框,包含ant、jdk和jenkins,初步懷疑可能jdk和ant版本衝突,於是問了下度娘,發現jdk和ant之間確實有版本要求,但是百度上沒搜到相關的對應版本信息,於是試着去ant官網上有沒有說明,好像有了收穫

 解決方法:可以看出ant1.9.x需要java5以上的版本,ant1.10.x需要java8。而我用的jdk7,ant用的是最新的1.10.1,

2. 查看錯誤日誌時,提示build.xml:6: Unexpected text " "

解決方法:將所有的註釋刪除,問題解決

3.taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found

由於Ant的lib文件沒有ant-jmeter-1.1.1.jar這個jar包,因爲ant執行jmeter腳本時會調用JMeterTask,但是在ant的lib文件沒有相應的jar包。所以一直會報這個錯。

解決方法:把jar包:ant-jmeter-1.0.9.jar放到ant的lib路徑中即可。因爲JMETER的測試結果一般生成的是一份聚合報告,如果想用ANT生成具體的測試報告,需要這樣的一個jar包 ant-jmeter-1.0.9.jar 裏面提供的一個JMeterTask的類來運行JMTER的測試腳本,生成jtl的結果文件,然後用XSLT來把.jtl的結果文件轉化爲.html形式的結果報告

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章