首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

0015. 提高 CI/CD 效率:如何配置 Jenkins Node 進行分散式構建

日期:2024年 12月 07日

標籤: Jenkins Continuous Integration(CI) Continuous Deployment(CD) Distributed Linux Ubuntu

摘要:Jenkins


應用所需:1. jenkins 主機(本篇 Linux Ubuntu 22.04 作業系統)
     2. 另一台 Windows 主機
解決問題:如何在 Ubuntu 的 Jenkins 主機上配置 Nodes ,管理另一台 Windows 機器
     2. 如何決定建置的主機
基本介紹:本篇分為3大部分。
第一部分:配置 Jenkins Nodes
第二部分:Node 機器配置
第三部分:建立 Job Demo 分散式






第一部分:配置 Jenkins Nodes

Step 1:介紹

官方文件裡面有更詳盡的說明、影片。
啟用 Jenkins Nodes 其實直接表達了使用分散式構建的優勢:

1. 負載平衡
2. 支持跨平台機器管理(如 Windows、Linux)
3. 針對特定任務的專用機器
4. 分散式處理 (提升效能 - 前提是任務可分散處理)


Step 2:進入 Jenkins

進入 Jenkins Server (這邊是 Ubuntu 安裝) -> 系統設定 -> 點擊 Nodes

Step 3:新增 Nodes

選擇 New Nodes


設定指定的名稱

Step 4:新增 Nodes 內容

此 Node 的 Windows Server 要開一個資料夾給 Jenkins 管理:

D:\\ForJenkins


標籤是可選,這邊為了方便說明添加 windows 名稱

Step 5:開啟設定

添加完成後,畫面上出現 N/A 是正常的,因為尚未建立連線。
在按下設定按鈕,進行後續配置



第二部分:Node 機器配置

Step 1:設定指令

進入後, Jenkins 會提示如果要讓 Node 與 Jenkins 建立連線,需要執行以下指令
我們建立的對象是 Windows Server 因此,要執行黑框的地方

Step 2:到 Node 主機配置 - 安裝 Java (可跳過)

可到 MicroSoft 官網安裝適合 Windows 的Java JDK 11


安裝完成後,可以開啟 Windows CMD 輸入:
若有版本號就表示安裝成功

java --version 



Step 3:到 Node 主機配置 - 安裝 Curl (可跳過)

可到 Curl 官網下載


安裝完成後,還需對 Windows 系統作環境配置,配置完成後可以開啟 Windows CMD 輸入:

curl --version 



Step 4:到 Node 主機配置 - 執行指令

進入 Windows Node 主機上,輸入以下指令:

curl.exe -sO http://192.168.51.28:8180/jnlpJars/agent.jar


再輸入以下:

java -jar agent.jar -url http://192.168.51.28:8180/ -secret da7b880129008e5c8606086a50851715323fc5e87cd52d9eb547ef6254fd98b9 -name LouisServer -workDir "D:\ForJenkins"


這樣就啟動完成

Step 5:確認啟動結果

回到 Jenkins Server 可以看到此 Node 已經有同步信息

Step 6:確認啟動結果

回到 Jenkins Server 可以看到此 Node 已經有同步信息

Step 7:Node Server

回到 Node Server 上,也可以看到此目錄下會有建立 Jenkins 的相關資料



第三部分:建立 Job Demo 分散式

Step 1:創建 Windows Job - 1

目前 Jenkins Server 上同時擁有 Ubuntu (自已)、Windows 主機,可以依照任務性質來決定建置任務
新建作業 -> FreeStyleJob -> 輸入 TestNodeWindows

Step 2:創建 Windows Job - 2

在限制專案執行點,輸入 windows (對應此 Node 建立的標籤)
※下方還會提示影響的節點有哪些

Step 3:創建 Windows Job - 完成

建置過程 -> 新增 Windows Batch 腳本

wmic logicaldisk get name, size, freespace, caption


模擬取得 Windows 主機的資訊

Step 4:創建 Ubuntu Job - 1


新建作業 -> FreeStyleJob -> 輸入 TestUbuntuNode

Step 4:創建 Ubuntu Job - 2

在限制專案執行點,輸入 build-in (表示 Jenkins Server 自己)

Step 5:創建 Ubuntu Job - 完成

建置過程 -> 新增 Shell 腳本

df -h


模擬取得 Linux Ubuntu 主機的資訊

Step 6:建置 Job 驗證

對剛剛建立的 2 個 Job 都執行建置

Step 7:建置 Job 驗證

在同一台 Jenkins 下,可以依照任務,指定建置工作分派到哪個 Server 上,在分布式建置的過程也可以加快執行作業。
Windows 結果:


Ubunut 結果: