Jenkins 共用程式函式庫的機制允許開發者將常用的 Groovy 指令碼程式碼模組化,並集中儲存於 GitLab 等版本控制系統中。如此一來,不同的 Jenkins Pipeline 專案便能輕鬆引入這些共用程式函式庫,避免程式碼重複撰寫,並提升維護效率。此機制特別適用於跨專案的通用建置、測試和佈署流程,例如程式碼簽出、單元測試執行、封裝及佈署至目標環境等。透過共用程式函式庫,團隊可以標準化 CI/CD 流程,降低錯誤率並加速交付速度,同時也更容易進行版本控制和程式碼更新。
Jenkins 共用程式函式庫的建立與佈署
在 Jenkins 中,共用程式函式庫(Shared Library)是一種強大的功能,允許我們將常用的指令碼程式碼抽取出來,方便在多個 Jenkins 工作中重複使用。以下是建立和佈署共用程式函式庫的步驟。
步驟 1:建立共用程式函式庫檔案
首先,我們需要建立一個 Groovy 檔案,內容如下:
def call(String RepoUrl, String Credentials, String Branch) {
stages {
stage("Checkout Code") {
steps {
git branch: Branch, credentialsId: Credentials, url: RepoUrl
}
}
stage("Cleaning workspace") {
steps {
bat 'mvn clean'
}
}
stage("Running Testcase") {
steps {
bat 'mvn test'
}
}
stage("Packing Application") {
steps {
bat 'mvn package -DskipTests'
}
}
stage("Deploying Application") {
steps {
bat 'mvn deploy -DskipTests'
}
}
}
}
這個檔案定義了一個名為 call 的函式,該函式接受三個引數:RepoUrl、Credentials 和 Branch。這個函式包含了 Jenkins 工作的各個階段,包括簽出程式碼、清理工作空間、執行測試、封裝應用程式和佈署應用程式。
步驟 2:推播共用程式函式庫檔案到 GitLab 儲存函式庫
接下來,我們需要建立一個新的 GitLab 儲存函式庫,並將共用程式函式庫檔案推播到該儲存函式庫。這樣就可以讓 Jenkins 存取並使用這個共用程式函式庫。
圖表翻譯:
graph LR
A[建立共用程式函式庫檔案] --> B[推播檔案到 GitLab]
B --> C[組態 Jenkins 使用共用程式函式庫]
C --> D[在 Jenkins 工作中使用共用程式函式庫]
這個圖表展示了建立和佈署共用程式函式庫的流程。
步驟 3:組態 Jenkins 使用共用程式函式庫
在 Jenkins 中,需要組態共用程式函式庫的位置和認證資訊。這樣就可以讓 Jenkins 存取並使用這個共用程式函式庫。
內容解密:
// 設定共用程式函式庫的位置和認證資訊
library 'my-shared-library'
// 使用共用程式函式庫
mySharedLibrary.call('https://gitlab.com/my-repo.git', 'my-credentials', 'main')
這個範例展示瞭如何在 Jenkins 工作中使用共用程式函式庫。
在Jenkins中設定共用程式函式庫
為了在Jenkins中使用共用程式函式庫,首先需要建立一個Git儲存函式庫來存放共用程式函式庫的程式碼。以下是設定共用程式函式庫的步驟:
步驟1:建立Git儲存函式庫
建立一個名為JenkinsSharedLibrary的私人儲存函式庫,並將.groovy檔案推播到其中。
步驟2:設定共用程式函式庫
- 前往Jenkins UI,選擇「Manage Jenkins」>「Configure System」。
- 滑動到「Global Pipeline Libraries」段落。
- 點選「Add」按鈕,以新增一個共用程式函式庫。
- 輸入一個名稱(例如
BuildJavaAPIs),以便在工作流程中使用@Library註解來參照共用程式函式庫。 - 在「Default Version」欄位中,輸入共用程式函式庫推播到的Git分支名稱(例如
master)。 - 選擇「Modern SCM」作為簽出方法,並在「Source Code Management」子段落中選擇「Git」。
- 輸入共用程式函式庫的Git儲存函式庫URL,並選擇適當的認證憑據。
- 點選「Save」按鈕,以儲存設定。
步驟3:建立工作流程作業
- 建立一個新的工作流程作業,命名為
PipelineJobUsingSharedLibrary。 - 滑動到「Pipeline」段落,並撰寫以下指令碼:
@Library('BuildJavaAPIs')
jenkinsbookcalculatorapi.git', 'Master', 'MyGitCredentials')
此指令碼匯入共用程式函式庫,並呼叫buildJavaAPI方法,傳入三個引數:Calculator API GitLab URL、分支名稱和認證憑據名稱。
步驟4:執行工作流程作業
- 前往Jenkins儀錶板,執行
PipelineJobUsingSharedLibrary作業。 - 檢查主控臺輸出,以確認工作流程作業是否成功執行。
內容解密:
@Library註解匯入共用程式函式庫,使其可在工作流程中使用。buildJavaAPI方法呼叫共用程式函式庫中的.groovy檔案,傳入必要的引數。- 共用程式函式庫的設定允許在多個工作流程中重複使用相同的程式碼,減少維護和更新的複雜度。
圖表翻譯:
flowchart TD
A[設定共用程式函式庫] --> B[建立Git儲存函式庫]
B --> C[設定共用程式函式庫]
C --> D[建立工作流程作業]
D --> E[執行工作流程作業]
E --> F[檢查主控臺輸出]
此圖表展示了設定共用程式函式庫和執行工作流程作業的步驟。
Jenkins 自動化與 API 介紹
在 Jenkins 的世界中,自動化是核心精神。透過 Jenkins REST APIs,我們可以輕鬆地控制 Jenkins 的各項功能,包括取得現有 Jenkins 工作的設定、觸發 Jenkins 工作等。
Jenkins REST APIs 介紹
Jenkins REST APIs 提供了一種簡單的方式來存取和操作 Jenkins 的功能。透過這些 APIs,我們可以使用 Python 或其他語言來控制 Jenkins。
建立可重複使用的 Library
在 Jenkins 中,我們可以建立可重複使用的 Library,讓我們可以輕鬆地在不同的專案中使用相同的程式碼。這個 Library 可以用來建構其他 Java API 專案。
Jenkins 管理員和使用者需要知道的功能
在整本文中,我們學習了 Jenkins 管理員和使用者需要知道的所有重要功能,包括如何使用 Jenkins REST APIs 來控制 Jenkins、如何建立可重複使用的 Library 等。
內容解密:
在上述內容中,我們學習瞭如何使用 Jenkins REST APIs 來控制 Jenkins、如何建立可重複使用的 Library 等。這些功能可以幫助我們提高工作效率,自動化我們的工作流程。
import requests
# 定義 Jenkins REST API 的 URL
jenkins_url = "http://localhost:8080"
# 定義 API 的認證資訊
username = "your_username"
password = "your_password"
# 使用 requests 來存取 Jenkins REST API
response = requests.get(jenkins_url + "/api/json", auth=(username, password))
# 列印出 API 的回應
print(response.json())
圖表翻譯:
此圖示為 Jenkins 的工作流程圖,展示瞭如何使用 Jenkins REST APIs 來控制 Jenkins、如何建立可重複使用的 Library 等。
flowchart TD
A[開始] --> B[取得 Jenkins 工作設定]
B --> C[觸發 Jenkins 工作]
C --> D[建立可重複使用的 Library]
D --> E[結束]
圖表翻譯:
此圖示為 Jenkins 的工作流程圖,展示瞭如何使用 Jenkins REST APIs 來控制 Jenkins、如何建立可重複使用的 Library 等。圖中展示了從開始到結束的整個工作流程,包括取得 Jenkins 工作設定、觸發 Jenkins 工作、建立可重複使用的 Library 等步驟。
Jenkins 中的使用者角色指派
在 Jenkins 中,使用者角色指派是一個重要的功能,讓管理員可以控制使用者的存取許可權。以下是使用者角色指派的步驟:
- 建立使用者角色:首先,需要建立使用者角色。在 Jenkins 中,可以透過「Assign Roles」螢幕來建立使用者角色。
- 指派角色:建立使用者角色後,需要指派角色給使用者。這可以透過「Role-Based Authorization Strategy Plugin」來完成。
- 設定角色許可權:指派角色後,需要設定角色許可權。這可以透過「Role-Based Strategy」來完成。
使用者角色指派的好處
使用者角色指派可以帶來以下好處:
- 提高安全性:透過控制使用者的存取許可權,可以提高 Jenkins 的安全性。
- 簡化管理:使用者角色指派可以簡化管理員的工作,讓他們可以更容易地控制使用者的存取許可權。
Jenkins 中的其他功能
Jenkins 還有其他功能,例如:
- 自動觸發:可以設定 Jenkins 自動觸發建置和佈署。
- AWS 平臺:Jenkins 可以與 AWS 平臺整合,提供更好的建置和佈署功能。
- 基本驗證:Jenkins 支援基本驗證,讓使用者可以安全地存取 Jenkins。
CI/CD 流程
CI/CD 流程是指將程式碼從開發到佈署的整個過程。以下是 CI/CD 流程的步驟:
- 程式碼開發:開發人員撰寫程式碼。
- 單元測試:開發人員撰寫單元測試案例。
- 建置和佈署:程式碼被建置和佈署到生產環境。
Jenkins 中的建置和佈署
Jenkins 可以用於建置和佈署程式碼。以下是 Jenkins 中的建置和佈署步驟:
- 建置:Jenkins 可以建置程式碼,並執行單元測試案例。
- 佈署:Jenkins 可以佈署程式碼到生產環境。
從技術架構視角來看,Jenkins 共用程式函式庫的建立與佈署,有效提升了自動化流程的模組化和可維護性。透過將通用的建置、測試和佈署邏輯封裝成可重複使用的程式碼塊,顯著降低了程式碼冗餘,也簡化了跨專案的流程管理。然而,共用程式函式庫的版本控制和相依性管理仍是需要審慎考量的環節,特別是當多個專案依賴不同版本的共用程式函式庫時,版本衝突的風險不容忽視。對於追求高度自動化的團隊而言,建立完善的版本管理策略和測試機制至關重要。展望未來,隨著 CI/CD 流程的日益複雜,預期共用程式函式庫將扮演更關鍵的角色,整合更豐富的功能,例如自動化測試、安全掃描和佈署策略管理等。因此,技術團隊應積極探索更進階的共用程式函式庫應用模式,例如根據領域驅動設計的模組化架構,以提升自動化流程的彈性和擴充套件性。玄貓認為,妥善運用共用程式函式庫,將是提升 CI/CD 效率和品質的關鍵策略。