在分散式架構下,Jenkins 能夠有效提升建置效率。首先,選擇合適的代理啟動方式,例如 JNLP 或 SSH,其中 SSH 啟動方式需要設定憑證與主機金鑰驗證策略,策略選項包含已知主機、手動提供金鑰、手動信任金鑰以及不驗證等方式。設定節點時,需指定節點名稱、執行器數量,並設定啟動方法和憑證。

分散式建置的Jenkins組態

在Jenkins中,分散式建置是一種強大的功能,允許您在多個節點上執行建置任務。這樣可以提高建置效率和降低建置時間。下面,我們將探討如何組態Jenkins的分散式建置。

啟動代理的方法

Jenkins提供了多種啟動代理的方法,包括:

  • JNLP代理:這種方法需要在代理節點上啟動JNLP代理程式。JNLP代理程式可以以GUI或非GUI模式執行。
  • SSH啟動:這種方法需要在主節點上啟動SSH服務,並在代理節點上組態SSH連線。
  • Windows服務:這種方法需要在Windows代理節點上組態Windows服務。

SSH啟動組態

SSH啟動是最常用的啟動代理方法之一。下面是SSH啟動的組態步驟:

  1. 選擇啟動方法:在Jenkins中,選擇"啟動代理via SSH"作為啟動方法。
  2. 輸入憑證:輸入用於SSH連線的憑證,包括使用者名稱和密碼。
  3. 選擇主機金鑰驗證策略:選擇主機金鑰驗證策略,包括"已知主機檔案驗證策略"、“手動提供的金鑰驗證策略”、“手動信任的金鑰驗證策略"和"不驗證的驗證策略”。

主機金鑰驗證策略

主機金鑰驗證策略是用於驗證SSH連線的金鑰的策略。下面是幾種常用的主機金鑰驗證策略:

  • 已知主機檔案驗證策略:這種策略會檢查已知主機檔案(~/.ssh/known_hosts)中是否存在與當前連線匹配的條目。如果不存在,則拒絕連線。
  • 手動提供的金鑰驗證策略:這種策略需要手動提供金鑰以進行驗證。
  • 手動信任的金鑰驗證策略:這種策略需要在第一次連線時手動信任金鑰。
  • 不驗證的驗證策略:這種策略不進行金鑰驗證,可能會導致安全風險。

節點組態

節點組態是指在Jenkins中組態節點的過程。下面是節點組態的步驟:

  1. 輸入節點名稱:輸入節點名稱,例如"Node1"。
  2. 輸入執行器數量:輸入執行器數量,例如"1"。
  3. 選擇啟動方法:選擇啟動方法,例如"SSH啟動"。
  4. 輸入憑證:輸入用於SSH連線的憑證,包括使用者名稱和密碼。
內容解密:

上述內容主要介紹了Jenkins的分散式建置組態,包括啟動代理的方法、SSH啟動組態、主機金鑰驗證策略和節點組態。這些組態是實作Jenkins分散式建置的關鍵步驟。

  flowchart TD
    A[啟動代理] --> B[SSH啟動]
    B --> C[主機金鑰驗證策略]
    C --> D[節點組態]
    D --> E[完成組態]

圖表翻譯:

此圖示Jenkins分散式建置組態的流程,包括啟動代理、SSH啟動、主機金鑰驗證策略和節點組態。每個步驟都對應著一個特定的組態過程,最終完成Jenkins分散式建置的組態。

分散式建置的 Jenkins 設定

在進行分散式建置的設定時,需要注意幾個重要的步驟,以確保 Jenkins 能夠順暢地執行任務。以下是設定過程中的關鍵點:

  1. 遠端根目錄: 選擇一個適合的遠端根目錄,例如 C:\JenkinsJobExecution,作為 Jenkins 工作空間的根目錄。這個目錄將被用於儲存工作空間的相關檔案。

  2. 標籤: 在標籤欄位中輸入 CalculatorAPI_Node,這將有助於識別該節點的用途。

  3. 使用方式: 保持「盡可能使用此節點」的值被選擇,以確保 Jenkins 能夠盡可能地使用這個節點進行建置。

  4. 啟動方法: 選擇「透過 SSH 啟動代理」作為啟動方法,這允許 Jenkins 透過 SSH 連線到從屬節點。

  5. 主機: 輸入從屬節點的 IP 地址,例如 192.168.43.185,作為 Jenkins 連線從屬節點的地址。

  6. 憑證: 選擇在此章節中建立的憑證項,以便 Jenkins 能夠使用正確的憑證進行身份驗證。

  7. 主機金鑰驗證策略: 選擇「已知主機檔案驗證策略」,以確保 Jenkins 能夠正確地驗證從屬節點的身份。

  8. 環境變數: 勾選「環境變數」下的核取方塊,並建立 JAVA_HOME 環境變數。這個變數的值應該是從屬節點上 JDK 的路徑,因為 Maven 需要這個路徑來執行 mvn 命令。

透過這些步驟,可以確保 Jenkins 能夠正確地設定分散式建置環境,並成功地在從屬節點上執行建置任務。同時,需要注意的是,所有的設定都應該根據實際的情況進行調整,以確保 Jenkins 的正常運作。

分散式Jenkins建置環境設定

在設定分散式Jenkins建置環境時,需要確保JAVA_HOME環境變數正確指向JDK。這個步驟對於確保Jenkins能夠正常運作至關重要。

步驟1:設定JAVA_HOME環境變數

首先,需要設定JAVA_HOME環境變數,指向JDK的安裝路徑。這個步驟可以在系統的環境變數設定中完成。

步驟2:儲存節點設定

設定JAVA_HOME環境變數後,需要儲存節點設定。這個步驟可以在Jenkins的節點設定頁面中完成。

步驟3:在代理機器上新增公鑰

接下來,需要在代理機器上新增公鑰。這個步驟可以透過以下命令完成:

touch authorized_keys

這個命令會在代理機器上建立一個名為authorized_keys的檔案。

步驟4:修改authorized_keys檔案許可權

新增公鑰後,需要修改authorized_keys檔案的許可權。這個步驟可以透過以下步驟完成:

  1. 右鍵點選authorized_keys檔案,選擇「內容」選單。
  2. 點選「安全」標籤。
  3. 點選「高階」按鈕。
  4. 點選「停用繼承」按鈕。
  5. 選擇「將繼承許可權轉換為明確許可權」選項。

圖表翻譯:

  flowchart TD
    A[設定JAVA_HOME環境變數] --> B[儲存節點設定]
    B --> C[新增公鑰]
    C --> D[修改authorized_keys檔案許可權]

這個圖表展示了設定分散式Jenkins建置環境的步驟。

步驟5:驗證設定

最後,需要驗證設定是否正確。這個步驟可以透過以下命令完成:

ssh -T git@github.com

如果設定正確,則會看到「Hi USERNAME! You’ve successfully authenticated, but GitHub does not provide shell access.」的訊息。

內容解密:

以上步驟展示瞭如何設定分散式Jenkins建置環境。透過設定JAVA_HOME環境變數、儲存節點設定、新增公鑰、修改authorized_keys檔案許可權和驗證設定,可以確保Jenkins能夠正常運作。這些步驟對於確保分散式Jenkins建置環境的安全性和穩定性至關重要。

Jenkins 分散式建置組態與執行

步驟 8:重新啟動 SSH 服務

前往服務視窗並重新啟動 OpenSSH SSH Server 服務。這個步驟確保了您之前對 SSH 組態的修改生效。

步驟 9:從主機檢查連線到代理機器

在主機上開啟命令提示符,執行以下命令以測試與代理機器的連線:

ssh 使用者名稱@代理機器IP地址

例如:

ssh ADMIN@192.168.43.185

按下 Enter 鍵後,您將被詢問是否繼續連線。輸入 yes 並按 Enter,SSH 連線將成功建立。在使用者目錄下的 .ssh 資料夾中將會建立一個名為 known_hosts 的檔案,內含代理機器的金鑰入口。

步驟 10:從主機啟動新的節點

點選「管理 Jenkins」>「管理節點和雲」,然後點選「Node1」條目,接著點選「重新啟動代理」按鈕。您將看到主機成功連線到代理機器的訊息。在此連線過程中,主機會將 remoting.jar 複製到代理機器上的遠端根目錄資料夾中。

建立自由式工作以在 Node1 代理上執行

在成功組態主機和代理機器使用 SSH 後,現在是建立一個工作以在您剛剛組態的節點上執行的時候。建立一個自由式工作,該工作將佈署 CalculatorAPI JAR 到 Nexus 倉函式庫。

  1. 建立工作:點選「新增工作」,選擇「自由式工作」,命名您的工作(例如,「CalculatorAPI 佈署」)。
  2. 限制工作執行節點:在工作組態中,勾選「限制此專案可以在哪些節點上執行」,並在「標籤表示式」欄位中輸入 Node1。這設定了工作只在指定的節點(Node1)上執行。
  3. 原始碼管理:設定 Git URL,以便 Jenkins 可以抓取您的程式碼。
  4. 建置步驟:新增一個建置步驟,選擇「執行 shell」或「執行 Windows 批次命令」,然後輸入佈署命令,例如 mvn deploy
  5. 儲存工作:點選「儲存」按鈕以儲存您的工作組態。

執行新的自由式工作在 Node1 代理上

在執行工作之前,確保您已經啟動了代理機器。然後,傳回到您的工作頁面,點選「建置立即」以執行工作。工作將在代理機器上執行,您可以在 Jenkins 主控臺輸出中檢視執行結果。

圖表翻譯:

  graph LR
    A[建立工作] --> B[設定原始碼管理]
    B --> C[設定建置步驟]
    C --> D[儲存工作]
    D --> E[啟動代理機器]
    E --> F[執行工作]
    F --> G[檢視執行結果]

這個圖表展示了建立和執行工作在 Node1 代理上的步驟,從建立工作、設定原始碼管理和建置步驟,到儲存工作、啟動代理機器,最終到執行工作並檢視結果。

從產業生態圈的動態變化來看,Jenkins 分散式建置已成為 CI/CD 流程中不可或缺的一環。本文深入探討了從 SSH 代理啟動、主機金鑰驗證策略設定到節點組態及實際建置執行的完整流程。透過明確的步驟拆解,如 JAVA_HOME 環境變數設定、authorized_keys 許可權管理及 remoting.jar 的複製過程,展現了建置一個穩定高效分散式 Jenkins 環境的關鍵要素。然而,單純的節點擴充套件並不能完全解決效能瓶頸,網路頻寬、代理機器資源限制以及建置任務本身的最佳化仍是需要持續關注的挑戰。展望未來,隨著容器化技術和 Kubernetes 的普及,Jenkins 與其整合將成為主流趨勢,更彈性、可擴充套件的雲原生 CI/CD 解決方案將進一步提升建置效率。玄貓認為,對於追求高效能和高可靠性的團隊而言,掌握 Jenkins 分散式建置的核心技術並積極擁抱新興技術,才能在快速變化的軟體開發領域保持競爭優勢。