Jenkins Pipeline 的設定需要建立新的 Pipeline 專案,並設定 GitHub Hook Trigger,以便在程式碼推播至 GitHub 時自動觸發建置。設定 Pipeline 指令碼時,需指定指令碼路徑及 GitHub 儲存函式庫資訊。在 GitHub 上,則需要建立 Webhook,設定 Jenkins 例項的 URL 及觸發事件。修改程式碼並推播到 GitHub 後,即可測試 Pipeline 任務是否能成功執行。為了提升建置效率,可以採用分散式建置,將建置任務分配到多臺機器上。Jenkins 的分散式建置架構採用主從架構,主機負責管理和排程建置任務,從機則負責執行建置任務。設定分散式建置時,需要安裝 Jenkins 主機和從機,設定主從機之間的通訊,組態從機的環境和工具,並建立和組態建置任務。主機和從機的連線方式可以透過 SSH 或 JNLP。使用 SSH 連線時,需要在主機上產生 SSH 金鑰,並將公鑰複製到從機上。使用 JNLP 連線時,需要在主機上設定固定的 TCP 埠,並在從機上安裝 JNLP 代理程式。
設定Jenkins Pipeline任務
為了建立一個Jenkins Pipeline任務,我們需要按照以下步驟進行:
- 建立新的Jenkins專案:從Jenkins儀錶板中點選「新建專案」連結,然後輸入專案名稱,選擇「Pipeline」選項,然後點選「確定」按鈕。
- 組態GitHub Hook觸發器:在「構建觸發器」部分,選擇「GitHub Hook觸發器」選項,這需要您已經安裝了GitHub外掛。
- 組態Pipeline指令碼:在「Pipeline」部分,選擇「從SCM載入Pipeline指令碼」選項,然後選擇「Git」作為SCM型別。輸入您的GitHub儲存函式庫的HTTP URL,然後選擇您剛剛建立的憑據。
- 指定指令碼路徑:在「指令碼路徑」欄位中,輸入您的Pipeline指令碼檔案的路徑,例如「BuildScript/BuildCalculatorAPI.txt」。
- 儲存組態:點選「儲存」按鈕以儲存您的組態。
建立GitHub Webhook
為了觸發Jenkins Pipeline任務,您需要在您的GitHub儲存函式庫中建立一個Webhook:
- 前往GitHub儲存函式庫頁面:前往您的GitHub儲存函式庫頁面,然後點選「設定」按鈕。
- 點選Webhooks選單:在左側選單中點選「Webhooks」選單。
- 新增Webhook:點選「新增Webhook」按鈕,然後輸入您的Jenkins例項的URL,格式為「/github-webhook/」。
- 選擇事件:選擇「僅推播事件」選項,然後點選「新增Webhook」按鈕。
測試Pipeline任務
為了測試您的Pipeline任務,您可以修改您的儲存函式庫中的程式碼,例如修改版本號:
<groupId>Pranodayd</groupId>
<artifactId>CalculatorAPI</artifactId>
<version>10.0</version>
然後提交您的變更並推播到GitHub儲存函式庫。這將觸發您的Jenkins Pipeline任務,並執行您的Pipeline指令碼。
圖表翻譯:
graph LR
A[修改程式碼] --> B[提交變更]
B --> C[推播到GitHub]
C --> D[觸發Jenkins Pipeline任務]
D --> E[執行Pipeline指令碼]
內容解密:
以上步驟展示瞭如何設定Jenkins Pipeline任務和建立GitHub Webhook,以便在程式碼變更時自動觸發Pipeline任務。透過這個過程,您可以自動化您的軟體開發和佈署流程。
分散式建置的重要性
在軟體開發的過程中,建置(build)是一個非常重要的步驟。隨著應用程式的複雜度增加,建置的時間也會相應增加。傳統的單機建置方式可能無法滿足大型應用程式的需求,因為它需要大量的計算資源和時間。因此,分散式建置(distributed builds)就成了解決這個問題的一種方法。
分散式建置的優點
分散式建置可以將建置任務分配到多臺機器上,從而大大減少建置時間。這種方式可以讓開發人員更快速地完成建置和測試,從而加速軟體的開發和佈署。另外,分散式建置還可以讓開發人員更容易地管理和維護建置環境,因為每臺機器只需要安裝特定的軟體和工具。
Jenkins 分散式建置架構
Jenkins 是一種流行的 CI/CD 工具,它提供了分散式建置的功能。Jenkins 的分散式建置架構是根據主從(master-slave)架構的。主機(master)是 Jenkins 的核心,負責管理和排程建置任務。從機(slave)是執行建置任務的機器,它們可以是物理機器或虛擬機器。
主機(Master)
主機是 Jenkins 的核心,負責管理和排程建置任務。它會將建置任務分配到不同的從機上,然後收集和整合建置結果。
從機(Slave)
從機是執行建置任務的機器,它們可以是物理機器或虛擬機器。從機需要安裝 Jenkins agent,才能與主機通訊和接收建置任務。
設定 Jenkins 分散式建置
要設定 Jenkins 分散式建置,需要進行以下步驟:
- 安裝 Jenkins 主機和從機。
- 設定主機和從機之間的通訊。
- 組態從機的環境和工具。
- 建立和組態建置任務。
圖表翻譯:
上述圖表展示了 Jenkins 分散式建置架構的基本流程。主機(A)將建置任務分配到不同的從機(B 和 C)上,然後從機執行建置任務並傳回建置結果到主機。這種方式可以讓開發人員更快速地完成建置和測試,從而加速軟體的開發和佈署。
分散式建置環境中的主從架構
在分散式建置環境中,主從架構扮演著重要的角色。這種架構由一個主節點(Master)和多個從節點(Slave)組成,負責執行不同階段的建置任務。主節點負責分配和管理建置任務,而從節點則負責執行這些任務。
主從架構的工作原理
主從架構的工作原理如下:
- 主節點(Master):主節點負責管理和分配建置任務給從節點。它會將建置任務分解為多個階段,並將這些階段分配給不同的從節點。
- 從節點(Slave):從節點負責執行主節點分配的建置任務。它們可以是不同的機器或虛擬機器,具備不同的組態和能力。
連線主節點和從節點的方法
有兩種方法可以連線主節點和從節點:
- 主節點到從節點(Master to Agent):在這種方法中,從節點會組態為接受主節點的連線請求。主節點會透過SSH連線到從節點,複製必要的檔案,並啟動建置過程。
- 從節點到主節點(Agent to Master):在這種方法中,從節點會主動連線到主節點。這種方法使用Java Network Launch Protocol(JNLP)協定,需要在主節點上設定固定的TCP埠。
設定JNLP代理
要設定JNLP代理,需要在主節點上設定固定的TCP埠,並在從節點上安裝JNLP代理。具體步驟如下:
- 在主節點上,前往「Manage Jenkins」>「Global Security」頁面,設定固定的TCP埠。
- 在從節點上,開啟瀏覽器並前往JNLP代理頁面,下載並安裝JNLP代理。
- 安裝完成後,可以將JNLP代理設定為Windows服務,以便於自動啟動。
內容解密:
以上內容介紹了分散式建置環境中的主從架構,包括其工作原理、連線方法和設定JNLP代理的步驟。這些內容對於瞭解和實作分散式建置環境具有重要的參考價值。
graph LR
A[主節點] -->|分配任務|> B[從節點]
B -->|執行任務|> C[建置結果]
C -->|回報結果|> A
圖表翻譯:
此圖表示了分散式建置環境中的主從架構。主節點負責分配任務給從節點,從節點執行任務並回報結果給主節點。這個過程可以提高建置效率和可擴充套件性。
組態主機與代理機器之間的SSH連線
本文將逐步介紹如何組態主機和代理機器,以啟動Jenkins代理使用SSH連線。我們將使用兩臺不同的機器來演示此組態。
主機(Master)
- IP地址:192.168.43.10
- 已安裝完整的Jenkins
代理機器(Slave)
- IP地址:192.168.43.185
- 未安裝Jenkins,但已安裝JDK11
步驟1:安裝SSH建置代理外掛
登入主機的Jenkins,使用外掛管理器安裝SSH建置代理外掛。
步驟2:在代理機器上安裝Java
如果代理機器尚未安裝Java,則需要安裝。Java安裝步驟不在本文範圍內。
步驟3:建立SSH公私鑰對
在主機上,使用ssh-keygen命令建立公私鑰對。我們在預設路徑${CURRENT_USER}\.ssh中建立了一個鑰對,並未指定密碼。您可以在不同路徑建立鑰對,並提供密碼。
步驟4:在主機上新增憑證專案
登入主機的Jenkins,前往「管理Jenkins」>「管理憑證」頁面。點選「Jenkins」連結,開啟「系統」頁面。點選「全域憑證(無限制)」連結,開啟「全域憑證(無限制)」頁面。點選左側的「新增憑證」選單。
選擇「SSH使用者名稱與私鑰」選項,輸入使用者名稱(注意:此使用者名稱應為代理機器上的驗證使用者)。ID和描述欄位可以填入任意值。選擇「直接輸入」單選按鈕,然後輸入私鑰值(從${CURRENT_USER}\.ssh\id_rsa檔案中複製)。
如果您在建立鑰對時指定了密碼,則需要在密碼欄位中填入。點選「確定」按鈕。
步驟5:在Jenkins主機上新增節點專案
在Jenkins主機上,點選「管理Jenkins」>「管理節點和雲端」連結,開啟新增節點的頁面。點選左側的「新增節點」連結,開啟新增節點詳細頁面。
輸入節點名稱(例如:Node1),選擇「永久代理」單選按鈕。點選「確定」按鈕,開啟詳細設定頁面。
以下是設定頁面的引數:
- 名稱:節點的名稱,應為唯一。
- 描述:此欄位為選填,但填入描述可以幫助其他團隊成員。
- 執行緒數量:Jenkins在此代理上執行的最大平行建置數量。我們使用了一個執行緒進行測試,您可以根據伺服器狀態定義執行緒數量。
- 遠端根目錄:代理需要一個專用的Jenkins目錄。指定代理上的路徑,例如:
c:\jenkins\node1。建議使用絕對路徑,此路徑應為代理機器上的本地路徑。Jenkins代理將在此目錄中建立工作區。 - 標籤:標籤(或標記)用於將多個代理分組為一個邏輯群組。多個標籤應以空格分隔。
- 使用方式:控制Jenkins如何在此節點上排程建置。盡可能利用此節點,這是預設和正常的設定。在此模式下,Jenkins自由使用此節點。
- 啟動方法:控制Jenkins如何啟動此代理。以下是可用的選項:
- 啟動代理透過SSH
- 啟動代理透過在控制器上執行命令
- 啟動代理透過Java Web Start:允許使用Java Web Start啟動代理。在此情況下,代理機器上需要開啟一個JNLP檔案,以建立到Jenkins主機的TCP連線。這意味著代理不需要從主機上可達,只需要能夠連線到主機。如果您已經啟用了安全設定,您可以自定義Jenkins主機用於接收來自JNLP代理的連線請求的埠號。
SSH連線組態完成
完成以上步驟後,您就成功組態了主機和代理機器之間的SSH連線,可以使用SSH啟動Jenkins代理。
自動化建置與佈署流程已成為現代軟體開發不可或缺的一環。本文深入探討了Jenkins Pipeline的設定、GitHub Webhook的整合,以及分散式建置架構的優勢和實踐,涵蓋了從單機建置到分散式環境的完整流程。分析顯示,善用Pipeline指令碼搭配版本控制系統的Webhook機制,能有效提升開發團隊的效率,實作持續整合和持續交付。然而,設定過程中需要注意安全性和網路連線的穩定性,避免潛在風險。展望未來,隨著雲原生技術的普及,Jenkins與Kubernetes的整合將成為主流趨勢,預計將進一步簡化分散式建置的複雜度,並提升資源利用效率。對於追求高效能和高可靠性的團隊而言,積極擁抱這些新興技術將是保持競爭力的關鍵。玄貓認為,掌握Jenkins的進階設定技巧,例如本文所述的SSH代理設定,對於建構更穩健、更彈性的CI/CD流程至關重要。