Jenkins CLI 提供了比圖形介面更靈活的 Jenkins 管理方式,尤其在自動化指令碼、批次處理和系統整合方面更具優勢。透過 CLI,開發者可以執行各種 Jenkins 操作,例如建立、刪除和觸發工作、取得工作清單和建置紀錄等。對於需要整合 Jenkins 到自動化流程或需進行大量操作的團隊來說,熟悉 Jenkins CLI 的使用至關重要。本篇將逐步說明如何使用 Jenkins CLI,包含基本操作、身份驗證設定,以及如何透過 SSH 安全地連線到 Jenkins 伺服器。
Jenkins CLI 入門
在前面的章節中,我們已經學習瞭如何使用 Jenkins 的圖形化使用者介面(GUI)進行操作。但是在某些情況下,我們可能需要透過程式設計語言或 Shell 指令碼來控制 Jenkins。這就是 Jenkins 命令列介面(CLI)的用途。
Jenkins CLI 提供了一組可以從 Shell 程式中執行的命令,讓我們可以自動化對 Jenkins 伺服器的存取。這對於需要批次處理任務或自動化工作流程的使用者來說尤其有用。
Jenkins CLI 的應用場景
在哪些情況下,我們需要使用 Jenkins CLI 而不是 GUI?以下是一些常見的使用場景:
- 自動化指令碼:當我們需要自動化一系列的 Jenkins 任務時,CLI 可以幫助我們實作這一點。
- 批次操作:如果我們需要對多個 Jenkins 工作項進行相同的操作,CLI 可以大大簡化這個過程。
- 整合其他工具:在某些情況下,我們可能需要將 Jenkins 與其他工具或系統整合在一起。CLI 提供了一種方便的方式來實作這種整合。
使用 Jenkins CLI
要使用 Jenkins CLI,首先需要啟用它。然後,你就可以使用各種命令來控制 Jenkins 伺服器。以下是啟用 Jenkins CLI 的步驟:
- 啟用 Jenkins CLI:你可以透過 Jenkins 的系統設定頁面啟用 CLI。
- 連線到 Jenkins 伺服器:使用
jenkins-cli命令連線到你的 Jenkins 伺服器。 - 執行命令:一旦連線成功,你就可以執行各種命令來控制 Jenkins 伺服器。
Jenkins CLI 提供了許多有用的命令,包括建立、刪除和觸發工作項等。以下是幾個例子:
jenkins-cli create-job:建立一個新的工作項。jenkins-cli delete-job:刪除一個工作項。jenkins-cli build:觸發一個工作項的建置。
Jenkins CLI 介紹
Jenkins 提供了多種 CLI 命令,讓使用者可以透過命令列與 Jenkins 伺服器進行互動。這些命令可以用來建立新的工作、執行特定工作的建置、取得所有工作的清單、取得建置的主控臺輸出、停用或刪除特定工作等。
下載 Jenkins CLI
要使用 Jenkins CLI,首先需要下載 jenkins-cli.jar 檔案。這個 JAR 檔案提供了 CLI 使用者端,讓您可以存取 CLI 介面。您可以在 Jenkins CLI 頁面上找到下載連結。
Jenkins CLI 基本操作
以下是如何使用 Jenkins CLI 進行基本操作的步驟:
- 建立新的工作:您需要指定工作名稱和根據新工作的組態 XML 檔案。
- 執行特定工作的建置:您需要指定工作名稱和建置編號。
- 取得所有工作的清單:您可以使用
list-jobs命令取得所有工作的清單。 - 取得建置的主控臺輸出:您需要指定工作名稱和建置編號。
提供驗證資訊
當您嘗試建立新的工作時,Jenkins 會要求您提供驗證資訊。如果您沒有提供驗證資訊,Jenkins 會將您的請求視為匿名使用者,並拒絕您的請求。
要提供驗證資訊,您可以使用 -auth 選項,後面跟著您的使用者名稱和密碼。例如:
java -jar jenkins-cli.jar -s <JENKINS_URL> -auth <USERNAME>:<PASSWORD> create-job <JOB_NAME> < <CONFIGURATION_XML>
範例
假設您想要建立一個新的工作,名稱為 CLIJob1,並使用現有的工作 Demo 的組態檔案。您可以使用以下命令:
java -jar D:\JenkinsBookExamples\jenkins-cli.jar -s http://192.168.43.10:8080 -auth <USERNAME>:<PASSWORD> create-job CLIJob1 < D:\JenkinsBookExamples\Demo.xml
請注意,您需要替換 <USERNAME> 和 <PASSWORD> 為您的實際使用者名稱和密碼。
內容解密
在上面的範例中,我們使用 create-job 命令建立了一個新的工作。這個命令需要指定工作名稱和組態 XML 檔案。組態 XML 檔案包含了工作的設定和引數。
當您執行這個命令時,Jenkins 會建立一個新的工作,並使用指定的組態 XML 檔案作為範本。
圖表翻譯
以下是 Jenkins CLI 命令的流程圖:
flowchart TD
A[開始] --> B[下載 jenkins-cli.jar]
B --> C[設定 Jenkins URL 和驗證資訊]
C --> D[執行 create-job 命令]
D --> E[建立新的工作]
E --> F[取得工作的組態 XML 檔案]
F --> G[設定工作的引數]
G --> H[儲存工作的設定]
這個流程圖展示瞭如何使用 Jenkins CLI 建立一個新的工作。首先,您需要下載 jenkins-cli.jar 檔案,然後設定 Jenkins URL 和驗證資訊。接下來,您可以執行 create-job 命令來建立一個新的工作,並取得工作的組態 XML 檔案。最後,您可以設定工作的引數並儲存工作的設定。
使用基本驗證進行使用者身份驗證
在使用Jenkins命令列介面(CLI)執行任務時,需要提供身份驗證資訊以完成任務。可以使用基本驗證和SSH驗證兩種方式進行身份驗證。以下將介紹如何使用基本驗證進行身份驗證。
基本驗證需要提供使用者名稱和密碼或API令牌。使用API令牌是更安全的選擇。首先,使用授權使用者的憑據登入Jenkins。登入後,可以前往建立API令牌的頁面。
建立API令牌的步驟如下:
- 登入Jenkins。
- 點選右上角的使用者名稱。
- 點選「Configure」連結。
- 點選「Add New Token」按鈕。
- 輸入令牌名稱並點選「Generate」按鈕。
- 複製生成的令牌並儲存。
使用API令牌進行身份驗證的命令如下:
java -jar ${Jenkins-cli.jar路徑} -s {JENKINS_URL} -auth ${使用者名稱}:${API_TOKEN} -webSocket create-job ${JOB_NAME} < ${Configuration.xml}
將命令中的佔位符替換為實際值,即可建立新的工作。
使用SSH進行身份驗證
除了基本驗證外,也可以使用SSH進行身份驗證。SSH驗證需要私鑰和公鑰對。首先,生成新的私鑰和公鑰對:
ssh-keygen -m PEM -t rsa
注意:-m PEM引數用於生成私鑰在RSA格式中,Jenkins CLI客戶端支援此格式。
生成私鑰和公鑰對後,需要在Jenkins使用者組態頁面上指定公鑰。步驟如下:
- 登入Jenkins。
- 點選右上角的使用者名稱。
- 點選「Configure」連結。
- 點選「Add New Key」按鈕。
- 輸入公鑰並點選「Save」按鈕。
使用SSH進行身份驗證的命令如下:
java -jar ${Jenkins-cli.jar路徑} -s {JENKINS_URL} -auth ${私鑰路徑} -webSocket create-job ${JOB_NAME} < ${Configuration.xml}
將命令中的佔位符替換為實際值,即可建立新的工作。
圖表翻譯:
flowchart TD
A[登入Jenkins] --> B[建立API令牌]
B --> C[複製API令牌]
C --> D[使用API令牌進行身份驗證]
D --> E[建立新的工作]
內容解密:
上述命令使用了基本驗證和SSH驗證兩種方式進行身份驗證。基本驗證需要提供使用者名稱和密碼或API令牌,而SSH驗證需要私鑰和公鑰對。使用API令牌進行身份驗證是更安全的選擇。
組態Jenkins的SSH伺服器
為了使用SSH身份驗證來存取Jenkins,您需要組態Jenkins中的SSH伺服器。首先,選擇「管理Jenkins」>「組態全域性安全性」選單,這將帶您到組態全域性安全性頁面。向下滾動頁面,找到頁面底部附近的SSH伺服器部分。
您需要為SSH連線設定一個埠。您有兩個選項:固定和隨機。如果您選擇隨機單選按鈕,Jenkins伺服器將選擇一個隨機埠來接受SSH連線。如果您在機器上設定了防火牆,並需要允許在特定埠上進行的傳入連線,則為隨機埠設定傳入規則將會很困難。如果您選擇固定單選按鈕,您可以使用您選擇的埠號。Jenkins將在給定的埠上接受SSH連線。由於埠是固定的,因此在防火牆中設定傳入規則將會很容易。
組態防火牆的傳入規則
如果機器上設定了防火牆,您需要建立一個傳入規則,以便允許在特定埠上進行的傳入連線或從特定程式發出的傳入連線。以下是建立傳入規則的步驟:
- 從Windows啟動選單中,選擇「Windows Defender防火牆與高階安全性」選單選項。
- 點選左側的「傳入規則」選項。
- 點選右側的「新規則」連結,這將開啟規則型別視窗。
- 選擇「埠」單選按鈕。
- 點選「下一步」按鈕。
- 選擇「特定本地埠」單選按鈕,並輸入9090。
- 點選「下一步」按鈕,這將開啟操作視窗。
- 點選「下一步」按鈕,以檢視組態檔案視窗。
- 點選「下一步」按鈕,以檢視名稱視窗。
- 輸入規則的名稱,並點選「完成」按鈕。
圖表翻譯:
flowchart TD
A[開始] --> B[組態Jenkins的SSH伺服器]
B --> C[設定SSH伺服器埠]
C --> D[組態防火牆的傳入規則]
D --> E[完成]
內容解密:
以上步驟詳述瞭如何組態Jenkins的SSH伺服器和防火牆的傳入規則,以便允許SSH連線。首先,需要組態Jenkins的SSH伺服器,設定固定的埠號,以便接受SSH連線。然後,需要組態防火牆的傳入規則,以便允許在特定埠上進行的傳入連線。這些步驟確保了Jenkins伺服器可以接受SSH連線,並且防火牆允許傳入連線。
從使用者經驗視角來看,Jenkins CLI 提供了擺脫圖形化介面限制的可能性,讓開發者得以透過指令碼實作高度自動化。深入剖析 Jenkins CLI 的架構,可以發現其核心價值在於整合性與擴充套件性。它不僅能串聯多個工作流程,更能與其他開發工具連結,大幅提升團隊效率。然而,CLI 的學習曲線較陡峭,需要開發者掌握相關的指令碼語言和命令。權衡其優缺點,對於追求自動化和效率的團隊而言,投入學習 Jenkins CLI 的成本是值得的。
此外,安全風險也不容忽視。透過 SSH 或 API Token 的驗證機制雖然提升了安全性,但金鑰管理和許可權控管仍需謹慎規劃,避免潛在的資安漏洞。從技術演進的趨勢來看,CLI 工具將持續扮演 DevOps 流程中的關鍵角色。預計未來 Jenkins CLI 將會更深度整合雲原生技術,並提供更簡潔易用的操作介面。對於追求 DevOps 最佳實踐的團隊來說,持續關注 Jenkins CLI 的發展,並將其融入工作流程將是提升競爭力的關鍵策略。玄貓認為,Jenkins CLI 雖非適用於所有團隊,但對於有自動化需求且重視效率的團隊而言,絕對是一項值得投資的技術。