1. 程式人生 > >Jenkins-slave分散式環境搭建

Jenkins-slave分散式環境搭建

前言

之前搭建過selenium grid的分散式環境,今天我們再來搭建一次Jenkins的分散式環境:jenkins-slave

Jenkins的Master-Slave分散式架構主要是為了解決Jenkins單點構建任務多、負載較高、效能不足的場景。

Master-Slave相當於Server和Agent的概念。Master提供web介面讓使用者來管理job和Slave,job可以執行在Master本機或者被分配到Slave上執行構建。一個Master(Jenkins服務所在機器)可以關聯多個Slave用來為不同的job或相同的job的不同配置來服務,現在我們開始配置Jenkins-slave

配置前準備

為了模擬真實的Jenkins環境,我採用了兩臺實體電腦,192.168.1.101作為Jenkins伺服器,並已經安裝好了Jenkins和java環境(如何安裝,點選此處), 192.168.1.103作為slave機也就是node節點,並安裝好Java環境,同時要保證兩臺機器處於同一個網段,相互能夠ping通,到此為止前期的環境準備就已經完成了

新建節點

登入Jenkins伺服器-點選Jenkins配置-選擇Manage Nodes(節點配置)-點選New Node(新建節點)-點選ok

配置節點

注意:如果你沒有配置過任何節點,那麼啟動方式是沒有我選擇的選項的(後面會講啟動方式的配置),你只需要先隨意選擇一個儲存即可

配置完所有的節點資訊之後儲存,會看到如下介面,我們可以點選節點機器進去看一下[點選window10]

裡面顯示是這樣的(你的機器看到的就是這樣的,因為啟動方式你並沒有配置),明顯這裡是斷開連結的狀態,是無法使用的, 你先別管為什麼,進入下面的設定

配置啟動方式

啟動方式的配置(配置上一個步驟中的啟動方式選項,讓我們需要的啟動方式能夠選擇)

返回Jenkins主目錄-點選Manage Jenkins-選擇Configure Global Security(全域性安全配置)

接下來勾選如下選項

全部勾選,或只勾選第3項即可(jave web的啟動方式),當然不同版本的jenkins這裡顯示的貌似也不太一樣,但是作用是一樣的,也許你的是如下頁面這樣的

儲存全域性安全配置,(這一步完成之後你需要重新到節點配置裡面把啟動方式修改一下,修成成我圖中的方式)之後再次儲存節點的配置,接下來檢視節點,你會看到如下顯示

啟動節點伺服器

啟動節點伺服器,目的是使節點伺服器與Jenkins主機建立連結,有兩種方式啟動

1. 你可以點直接點選Launch,然後根據提示,會執行下載slave-agent.jnlp檔案,下載完成後,把此檔案上傳到作為節點的機器(192.168.1.103)的遠端工作目錄中(配置節點時的遠端工作目錄)

2. 點選上圖中的agent.jar連結,下載此檔案,下載完成後此檔案傳到作為節點的機器(192.168.1.103)的遠端工作目錄中(配置節點時的遠端工作目錄),在此目錄下執行cmd命令

java -jar agent.jar -jnlpUrl http://192.168.1.102:8080/computer/window10/slave-agent.jnlp -secret 3217c15e66f1fbbe597775fcd0513b895ccf02c3e7fc3e6b3d2a53d487e7bac4 -workDir "D:\Program Files (x86)\Jenkins"

注意其中的地址,地址中的ip是代理自動生成的Jenkins伺服器代理地址,我們在執行命令時,需要把這個地址改為真實的Jenkins伺服器地址192.168.1.101

以上兩種方式任選其一,我這裡選擇執行cmd命令(注意命令是在節點主機上執行的),執行結果如下

再次檢視Jenkins主機上的幾點狀態

構建配置

接下來配置一下Job,測試一下專案在節點主機上是否能夠成功構建並執行

新建專案

配置Geeral

注意這裡的標籤名,輸入後會自動識別之前節點的標籤

新增構建步驟

這裡我選擇的是執行windows批處理命令,這裡有個坑

python直譯器的完整目錄需要是節點主機上安裝的直譯器路徑,當然如果你的直譯器配置了環境變數,也可以省去完整路徑

ok,我們儲存配置,我只做了簡單的配置,沒有其他功能,如果你想配置傳送郵件,拉取git庫的程式碼執行等其他功能,你可以參考我之前的文章

執行構建

接下來我們手動執行一下構建,因為這個專案是第一次配置的,所以需要手動執行一次構建,為了生成專案的工作空間

當手動執行完構建之後,你會在節點主機的遠端專案目錄下發現生成了一個workspace資料夾且裡面包含了以專案名稱為PytestUiAutoTest的資料夾

下一步,我們手動把專案的原始碼複製到此目錄下,然後再次執行構建

檢視結果

Jenkins伺服器控制檯日誌

通過控制檯日誌可以看到,執行任務的機器是我們配置的節點伺服器執行的

最後

整個環境的配置到這裡已經全部搭建完成,再次宣告需要注意的幾點

1. 配置節點時的遠端工作目錄可以是節點伺服器上的任意目錄

2. 啟動節點時的cmd命令中的ip地址一定是Jenkins伺服器的真實地址,因為換成代理的虛擬地址時,節點伺服器連結不上Jenkins伺服器(當然你也可以試試使用代理地址,我是沒成功)

3. 執行指令碼的批處理命令中的python直譯器的路徑需要是節點伺服器中安裝的pyhon直譯器的路徑(並不是Jenkins所在伺服器的直譯器路徑)

4. 這點也是最重要的一點,前面所有配置的前提是你的Jenkins主機和節點主機已經配置了Java