在現今軟體開發流程中,持續整合和持續交付至關重要。本文將逐步示範如何使用Maven構建Java API,並將其發布到Nexus倉函式庫,同時結合Jenkins實作自動化佈署。此流程將涵蓋Jenkins的組態,包括Maven設定、Git憑證設定以及自由式工作的建立。我們也會深入探討程式碼層面,包含新增功能、單元測試以及版本更新等環節,確保程式碼品質和發布流程的穩定性。
透過設定 Jenkins 中的 Maven 與 Git 引數,並建立一個自由式工作,我們可以自動化建置和發布 Java API 至 Nexus 儲存函式庫。過程中,我們會使用 Git 分支管理功能,包含建立新分支、提交變更、推播至遠端儲存函式庫,以及合併分支等操作。同時,我們也會撰寫單元測試案例,確保程式碼品質,並在程式碼中加入減法功能,並更新 API 版本號。最後,我們將透過 Jenkins 執行建置工作,並驗證 API 是否成功釋出至 Nexus 儲存函式庫。
整合Maven與Nexus倉函式庫並建立自由式工作以發布Java API
在本文中,您將學習如何設定Jenkins並建立一個自由式工作以發布新的計算器版本(CalculatorAPI2.0.jar)到Nexus倉函式庫。
步驟1:在Jenkins中設定Maven
啟動Jenkins伺服器並登入Jenkins。前往Jenkins儀錶板,選擇「管理Jenkins」>「全域性工具組態」。這將帶您到全域性工具組態頁面。
在預設設定提供者欄位中,有一個名為「使用預設Maven設定」的欄位,這是預設設定檔案${use.homer}\.m2\settings.xml。這是您設定Nexus倉函式庫憑證的地方,因此無需進行任何更改。
向下滾動頁面並單擊「新增Maven」按鈕,以展開Maven部分。輸入名稱到「名稱」欄位中,取消選擇「自動安裝」,並指定Maven安裝目錄路徑到「MAVEN_HOME」欄位中。單擊「儲存」按鈕。
步驟2:向Jenkins新增Git儲存函式庫憑證
前往憑證管理器並建立一個憑證條目,包含Git使用者名稱和密碼。參考第8章中建立憑證條目的詳細步驟。我在Jenkins憑證管理器中建立了一個憑證條目。
步驟3:從Jenkins儀錶板建立自由式工作
單擊Jenkins儀錶板上的「新建專案」連結。輸入工作名稱到「輸入專案名稱」欄位中,選擇「自由式專案」選項。單擊「確定」按鈕。
我將我的工作命名為「ReleaseCalculatorAPI」,並選擇了「自由式專案」選項。
在「原始碼管理」部分,選擇Git單選按鈕,並輸入Git程式碼倉函式庫的HTTPS URL到「倉函式庫URL」欄位中。參考本章中的「將程式碼從本地倉函式庫推播到GitLab中的中央倉函式庫」部分,以瞭解從GitLab倉函式庫中取得倉函式庫URL的步驟。
從下拉選單中選擇包含GitLab使用者名稱/密碼的憑證條目,並輸入分支名稱(例如「Master」)到「分支規範」欄位中。本例使用「Master」作為Git儲存函式庫的主分支。
向下滾動頁面以新增構建步驟。單擊「新增構建步驟」下拉選單,並選擇「呼叫頂級Maven目標」選項。
在Maven版本下拉選單中選擇「MyMaven」選項,在「目標」欄位中輸入「佈署」。單擊「儲存」按鈕。
步驟4:向API專案新增減法函式和單元測試案例
清單12-4顯示了新增到Calculator.java的減法函式。
public int subtraction(int num1, int num2) {
    int result = num1 - num2;
    return result;
}
我在src/test/java目錄下的Pranodayd.CalculatorAPI包中建立了一個名為TestSubtractionFunctionality.java的檔案,並增加了一些減法功能的單元測試案例。參考清單12-5。
package Pranodayd.CalculatorAPI;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
public class TestSubtractionFunctionality {
    Calculator calculator;
    int result;
    @BeforeClass
    public void setUp() {
        calculator = new Calculator();
    }
    @Test
    public void testSubtraction() {
        result = calculator.subtraction(10, 5);
        Assert.assertEquals(result, 5);
    }
}
內容解密:
- 在Jenkins中設定Maven以便與Nexus倉函式庫進行整合。
- 向Jenkins新增Git儲存函式庫憑證以便存取程式碼。
- 建立一個自由式工作以發布新的計算器版本到Nexus倉函式庫。
- 向API專案新增減法函式和單元測試案例以驗證其功能。
圖表翻譯:
  graph LR
    A[啟動Jenkins伺服器] --> B[設定Maven]
    B --> C[新增Git儲存函式庫憑證]
    C --> D[建立自由式工作]
    D --> E[新增減法函式和單元測試案例]
    E --> F[發布計算器版本到Nexus倉函式庫]
圖表顯示了整個過程的流程,從啟動Jenkins伺服器開始,到發布計算器版本到Nexus倉函式庫為止。每一步驟都對應到上述步驟的描述。
整合Maven與Nexus倉函式庫,並建立自由式工作以發布Java API
在這個章節中,我們將探討如何整合Maven與Nexus倉函式庫,並建立自由式工作以發布Java API。首先,我們需要初始化Calculator物件,如下所示:
public void Init() {
    Cal = new Calculator();
}
在每個測試方法之前,我們需要重新初始化Result變數,以確保測試結果的正確性:
@BeforeMethod
public void ReInitialise() {
    Result = 0;
}
接下來,我們將實作兩個測試方法:TestSubtractionWithPositiveNumbers和TestSubtractionWith1Positive1NegativeNumbers。這兩個方法分別測試減法運算對於正數和混合數(正數和負數)的正確性:
@Test(priority = 1, groups = {"RegressionTest"})
public void TestSubtractionWithPositiveNumbers() {
    Result = Cal.Subtraction(50, 10);
    Assert.assertEquals(Result, 40, "Subtraction does not work with Positive Numbers");
}
@Test(priority = 2)
public void TestSubtractionWith1Positive1NegativeNumbers() {
    Result = Cal.Subtraction(50, -10);
    Assert.assertEquals(Result, 60, "Subtraction does not work with 1 Positive and 1 Negative Numbers");
}
最後,在測試類別結束時,我們需要將Calculator物件設為null,以釋放資源:
@AfterClass
public void Teardown() {
    Cal = null;
}
現在,讓我們將版本從1.0更新到2.0,以反映API的新功能。這需要修改pom.xml檔案中的版本號:
<groupId>Pranodayd</groupId>
<artifactId>CalculatorAPI</artifactId>
<version>2.0</version>
儲存對pom.xml檔案的修改後,開發人員將執行單元測試使用案例,並確認它們透過後,再提交和推播變更。
內容解密:
在上述程式碼中,我們定義了一個Calculator類別,具有減法運算功能。然後,我們使用JUnit框架建立了兩個測試方法,以驗證減法運算的正確性。在每個測試方法中,我們使用Assert.assertEquals方法來比較預期結果和實際結果。如果結果不匹配,則會丟擲異常。
圖表翻譯:
以下是程式碼邏輯的Mermaid流程圖:
  flowchart TD
    A[初始化] --> B[執行測試方法]
    B --> C[減法運算]
    C --> D[比較結果]
    D --> E[透過/失敗]
在這個流程圖中,我們可以看到程式碼的邏輯流程:初始化 -> 執行測試方法 -> 減法運算 -> 比較結果 -> 透過/失敗。
圖表翻譯:
這個流程圖展示了程式碼的邏輯流程,從初始化開始,然後執行測試方法,進行減法運算,比較結果,最後根據結果判斷是否透過或失敗。這個流程圖有助於我們更好地理解程式碼的邏輯結構和執行流程。
Git版本控制與Jenkins整合
建立新分支
首先,開啟命令提示符並使用cd命令進入專案目錄。接下來,建立一個新分支來追蹤新的變更,使用以下命令:
git checkout -b "減法功能"
這個命令會建立一個名為「減法功能」的新分支。
提交變更
接下來,將變更新增到暫存區域中。然後,提交變更到新建立的分支中,使用以下命令:
git commit -m "新增減法功能到Java API專案"
這個命令會提交變更到「減法功能」分支中。
推播分支到中央倉函式庫
現在,將分支推播到Git中央倉函式庫中,使用以下命令:
git push origin 減法功能
如果Git要求憑證,這時可以輸入Git使用者名稱和密碼。
合併分支
重新整理GitLab倉函式庫頁面後,會看到一個通知,指出「減法功能」分支已經推播。點選「建立合併請求」按鈕,會開啟新的合併請求頁面。
在描述欄中輸入對新變更的描述。然後,點選「指派給我」連結將合併請求指派給自己。滾動頁面到底部,點選「建立合併請求」按鈕。
確保「當合併請求被接受時刪除源分支」核取方塊被選中。這樣,當「減法功能」分支與主分支合併後,「減法功能」分支將被從中央倉函式庫中刪除。
執行Jenkins任務
點選Jenkins儀錶板上的時鐘圖示,旁邊的工作專案。可以在Build Executor Status區域看到工作的進度。一旦工作執行完成,可以看到其控制檯輸出。
內容解密:
上述過程涉及Git版本控制系統和Jenkins的整合。首先,建立一個新分支來追蹤新的變更。然後,提交變更到新建立的分支中。接下來,推播分支到Git中央倉函式庫中。然後,合併分支到主分支中。最後,執行Jenkins任務來發布Java API到Nexus倉函式庫中。
  flowchart TD
    A[建立新分支] --> B[提交變更]
    B --> C[推播分支到中央倉函式庫]
    C --> D[合併分支到主分支]
    D --> E[執行Jenkins任務]
圖表翻譯:
上述流程圖展示了Git版本控制系統和Jenkins的整合過程。首先,建立一個新分支來追蹤新的變更。然後,提交變更到新建立的分支中。接下來,推播分支到Git中央倉函式庫中。然後,合併分支到主分支中。最後,執行Jenkins任務來發布Java API到Nexus倉函式庫中。這個過程確保了程式碼的版本控制和自動化發布。
從技術整合的視角來看,本文成功展示瞭如何利用 Jenkins 和 Maven 將 Java API 發布至 Nexus 倉函式庫。透過設定 Maven、組態 Git 憑證,並建立自由式工作,我們實作了自動化的建置與佈署流程。深入分析這個流程,可以發現其核心價值在於版本控制的強化和佈署效率的提升。藉由 Git 的分支管理和合併請求機制,我們可以有效追蹤程式碼變更,並確保程式碼品質。同時,Jenkins 的自動化構建功能則大幅縮短了發布週期,降低了人為錯誤的風險。然而,此流程仍存在一些潛在挑戰。例如,對於複雜的專案,pom.xml 的組態可能會變得繁瑣,需要更精細的管理。此外,安全性也是一個重要考量,需要妥善管理 Nexus 倉函式庫的存取許可權,以防止未經授權的發布。展望未來,隨著 DevOps 理念的普及,預計 Jenkins 與 Git 等工具的整合將更加緊密,並融入更豐富的自動化測試和佈署策略。對於追求效率和品質的開發團隊而言,持續整合與持續交付將成為不可或缺的發展方向。玄貓認為,掌握此流程對於提升軟體交付效率至關重要,開發團隊應積極探索並實踐,以充分發揮其潛力。
 
            