在規模化專案的交付流程中,單一 Jenkins Master 的架構往往會成為效能與安全性的瓶頸。Master 節點應專注於任務調度、流程控管與 UI 展示,而高強度的運算任務——如程式碼編譯、單元測試、容器構建與安全掃描——則應交由專門的執行節點(Agent)處理。
本篇將深入探討 Jenkins 分散式架構的設計思維,並引導你完成一個具備多重編譯環境(.NET, NodeJS, Java)的 Linux Agent 配置,實現運算資源的彈性擴展與環境隔離。
在 Agent 主機(<AGENT_IP>)上,我們需要根據專案需求安裝必要的 Runtime。
Jenkins Master 與 Agent 之間的通訊(JNLPS / SSH)依賴於 Java 執行環境。
sudo apt-get update
sudo apt-get install openjdk-17-jdk -y
為了確保「構建一致性」,Agent 上的 SDK 版本必須與開發團隊採用的標準一致。
# 安裝 .NET 8 SDK
sudo apt-get install -y dotnet-sdk-8.0
# 透過官方 Source 安裝穩定版 NodeJS 18
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
# 定義 Jenkins 專屬的工作目錄路徑
sudo mkdir -p /home/J
sudo chmod 777 -R /home/J
導向 Manage Jenkins -> Nodes -> New Node。
節點定義:
Linux-Build-Agent-01
/home/J (Agent 端的代碼檢出位置)dotnet ubuntu linux (Pipeline 中用來路由任務的關鍵標籤)Only build jobs with label expressions matching this node (確保資源專款專用)通訊配置 (Launch Method):
我們採用 Launch agents via SSH,這是 Linux 環境下最穩健且安全的連線方式。
<AGENT_IP>
~/.ssh/authorized_keys,私鑰存於 Jenkins Master。Non verifying Verification Strategy,但在跨網路環境建議嚴格校驗。10
啟動節點後,查看 Jenkins Console Log。若看到 Agent successfully connected and online,表示該 Agent 已正式納入算力資源池。
透過 Master/Agent 架構的建立,我們成功將「調度」與「執行」解耦。這提升了交付流程的效能,同時也為後續支援不同技術棧的專案提供了擴展可能。
算力已到位,明天的文章我們將探討如何透過「全域工具配置(Global Tool Configuration)」來管理跨節點的工具路徑,實現真正的環境抽象化。