設定 Git SSH 金鑰對於開發者從遠端儲存函式庫克隆專案至關重要。如果私人金鑰不在預設路徑,則需額外設定,例如註冊金鑰、建立 config 檔案或設定 Git 全域組態。完成 SSH 設定後,才能順利克隆儲存函式庫。本文進一步說明如何使用 Jenkins 建立自動觸發的 Free-Style Job,用於管理 Java API 版本。此流程包含了程式碼修改、單元測試、版本號更新、提交變更到 Git 儲存函式庫,以及透過 Jenkins 自動構建和佈署新版本的 API。

在實際開發中,設定 SSH 金鑰是每個開發者必備的技能,能確保安全地存取遠端儲存函式庫。而 Jenkins 作為 CI/CD 工具,能自動化建置、測試和佈署流程,提升開發效率。透過結合 Git 和 Jenkins,可以有效管理程式碼版本,並確保程式碼品質。文章中提到的三種 SSH 金鑰設定方法,讓開發者能根據自身需求選擇最合適的方式。此外,使用 Jenkins 管理 API 版本,可以自動化構建流程,減少人工操作,並確保版本的一致性。

Git版本控制與SSH金鑰設定

當一個新開發者第一次為一個儲存函式庫做出貢獻時,他需要在自己的機器上下載整個遠端儲存函式庫,包括所有提交歷史和內容,如原始碼檔案等。這個過程稱為克隆(clone)。但是,在克隆儲存函式庫之前,需要進行一些設定。

首先,回憶一下生成SSH金鑰對的過程。如果私人金鑰位於預設位置(即$(user.name)\.ssh),則可以直接執行git clone命令。但是,如果私人金鑰位於其他位置,例如D:\SSHKeys\MyGitlabKeys,則需要進行額外的設定。

有三種選擇可以實作此目的:

選項1:註冊私人金鑰

可以將私人金鑰檔案註冊到known_hosts檔案中,這樣就可以使用私人金鑰進行身份驗證。具體步驟如下:

  1. 執行命令將私人金鑰註冊到known_hosts檔案中。
  2. 確認是否繼續連線(yes/no/[fingerprint])。
  3. 輸入密碼短語。

選項2:建立config檔案

可以在.ssh目錄中建立一個config檔案,並新增私人金鑰檔案的條目。具體步驟如下:

  1. 開啟.ssh目錄。
  2. 右鍵點選並選擇「Git Bash Here」以開啟Git Bash。
  3. 執行touch config命令建立config檔案。
  4. 開啟config檔案並新增以下內容:
# GITLAB
PreferredAuthentications publickey
IdentityFile D:\SSHKey\MyGitlabKeys
  1. 儲存檔案。

選項3:設定Git全域組態

可以執行以下命令設定私人金鑰檔案在Git全域組態中:

git config --global core.sshCommand "ssh -i D:\\SSHKey\\MyGitlabKeys -F /dev/null"

克隆儲存函式庫

  1. 取得儲存函式庫的SSH URL。
  2. 點選儲存函式庫頁面的「Clone」按鈕。
  3. 點選「Clone with SSH」部分的「Copy URL」按鈕。
  4. 建立一個新的空白目錄,例如NewDeveloper,並在其中克隆儲存函式庫。

內容解密:

以上步驟描述瞭如何設定SSH金鑰以便克隆Git儲存函式庫。首先,需要確定私人金鑰的位置,如果不在預設位置,則需要進行額外的設定。有三種選擇可以實作此目的:註冊私人金鑰、建立config檔案或設定Git全域組態。最後,可以克隆儲存函式庫並開始編碼。

圖表翻譯:

  graph LR
    A[生成SSH金鑰] --> B[設定私人金鑰]
    B --> C[註冊私人金鑰]
    C --> D[建立config檔案]
    D --> E[設定Git全域組態]
    E --> F[克隆儲存函式庫]

圖表描述了設定SSH金鑰的過程,從生成SSH金鑰到克隆儲存函式庫。每一步驟都清晰地展示了設定私人金鑰的方法和最終克隆儲存函式庫的目標。

建立自動觸發的Free-Style Job以管理Java API版本

在本章中,我們將探討如何使用Jenkins建立一個自動觸發的Free-Style Job,以管理Java API版本。首先,我們需要克隆一個Git儲存函式庫到本地機器上。

步驟1:克隆Git儲存函式庫

開啟命令提示符,切換到D:\NewDeveloper目錄。然後,使用以下命令克隆Git儲存函式庫:

git clone git@github.com:jenkinsbook/calculatorapi.git

這將會提示您確認是否新增SSH客戶端到已知主機列表中。

步驟2:新增乘法功能到計算器類別

接下來,讓我們開啟已經克隆的專案,在Eclipse中新增一個乘法功能到Calculator.java檔案中。

首先,建立一個新的工作區,並匯入已經克隆的Maven專案。選擇「檔案」>「匯入」>「現有的Maven專案」,然後選擇已經克隆的專案路徑。

然後,開啟Calculator.java檔案,新增以下程式碼:

public int multiplication(int num1, int num2) {
    int result = num1 * num2;
    return result;
}

步驟3:新增單元測試案例到乘法功能

接下來,讓我們新增一些單元測試案例到乘法功能中。建立一個新的Java類別TestMultiplicationFunctionality.java,然後新增以下程式碼:

package Pranodayd.CalculatorAPI;

import org.testng.Assert;
import org.testng.annotations.*;

public class TestMultiplicationFunctionality {
    Calculator calculator;
    int result;

    @BeforeClass
    public void init() {
        calculator = new Calculator();
    }

    @BeforeMethod
    public void reinitialisingResult() {
        result = 0;
    }

    @Test(priority = 1, dataProvider = "providePositiveIntegerValues", groups = {"RegressionTest"})
    public void testMultiplicationWithPositiveValues(int number1, int number2, int expectedResult) {
        result = calculator.multiplication(number1, number2);
        Assert.assertEquals(result, expectedResult, "Multiplication does not work with positive numbers");
    }
}

在上面的程式碼中,我們使用TestNG框架來撰寫單元測試案例。我們定義了一個DataProvider來提供測試資料,並使用@BeforeClass和@BeforeMethod註解來初始化和重新初始化測試資料。

步驟4:建立自動觸發的Free-Style Job

現在,讓我們使用Jenkins建立一個自動觸發的Free-Style Job,以管理Java API版本。開啟Jenkins控制檯,選擇「新增專案」,然後選擇「Free-Style Job」。

填寫Job名稱和描述,然後選擇「Git」作為版本控制系統。填寫Git儲存函式庫URL和認證資訊,然後選擇「Build Triggers」>「GitHub hook trigger for GITScm polling」。

最後,選擇「Build」>「Execute shell」或「Execute Windows batch command」,然後填寫構建命令。例如:

mvn clean package

這將會構建Java API專案,並產生一個JAR檔案。

圖表翻譯:

  graph LR
    A[克隆Git儲存函式庫] --> B[新增乘法功能]
    B --> C[新增單元測試案例]
    C --> D[建立自動觸發的Free-Style Job]
    D --> E[構建Java API專案]

在上面的圖表中,我們展示了建立自動觸發的Free-Style Job的流程。首先,我們克隆Git儲存函式庫,然後新增乘法功能和單元測試案例。接下來,我們建立一個自動觸發的Free-Style Job,以管理Java API版本。最後,我們構建Java API專案,並產生一個JAR檔案。

自動觸發自由式工作任務以管理Java API版本

步驟4:修改版本號為3.0

pom.xml檔案中,假設您計劃發布版本3.0的CalculatorAPI.jar,並新增了乘法功能。您需要修改pom.xml中的版本號從2.0更新為3.0,如下所示:

<groupId>Pranodayd</groupId>
<artifactId>CalculatorAPI</artifactId>
<version>3.0</version>

步驟5:單元測試新增的乘法功能和迴歸測試

執行mvn test命令以執行所有單元測試案例,確認新增的乘法功能正常工作且未破壞先前實作的加法和減法功能。

  1. 開啟命令提示符,使用cd命令切換到專案目錄。
  2. 執行mvn test命令。
  3. 驗證所有測試案例是否透過。

內容解密:

上述程式碼片段展示瞭如何使用Maven修改專案版本號並執行單元測試。pom.xml檔案是Maven專案的核心組態檔,版本號的修改直接影響到專案的版本控制和發布。

// Maven版本號修改示例
public class VersionModifier {
    public static void main(String[] args) {
        // 讀取pom.xml檔案
        File pomFile = new File("pom.xml");
        
        // 修改版本號
        String newVersion = "3.0";
        
        // 更新pom.xml檔案
        updatePomFile(pomFile, newVersion);
    }
    
    private static void updatePomFile(File pomFile, String newVersion) {
        // 實作pom.xml檔案更新邏輯
    }
}

圖表翻譯:

  flowchart TD
    A[開始] --> B[讀取pom.xml]
    B --> C[修改版本號]
    C --> D[更新pom.xml]
    D --> E[執行單元測試]
    E --> F[驗證測試結果]

此圖表描述了修改Maven專案版本號和執行單元測試的流程。從讀取pom.xml檔案開始,到修改版本號、更新檔案,最後執行單元測試並驗證結果。

自動觸發自由式工作任務以管理Java API版本

在上一章中,我們已經完成了計算器API的開發和測試。現在,我們需要將這些變更提交到版本控制系統中,並自動觸發Jenkins工作任務以管理Java API版本。

步驟6:提交新功能變更到本地倉函式庫

首先,我們需要建立一個新的分支,命名為「MultiplicationFunction」。這個分支將包含我們新增的乘法功能。

git checkout -b "MultiplicationFunction"

接下來,我們需要將變更新增到暫存區:

git add.

然後,我們提交這些變更到新的分支:

git commit -m "新增乘法功能到計算器API"

步驟7:推播MultiplicationFunction分支到遠端倉函式庫

現在,我們需要將這個分支推播到遠端倉函式庫:

git push origin MultiplicationFunction

注意,我們使用SSH URL進行推播,並需要輸入SSH金鑰的密碼。

步驟8:建立合併請求

推播完成後,我們可以在GitLab倉函式庫頁面上看到新的分支「MultiplicationFunction」。現在,我們需要建立一個合併請求:

  graph LR
    A[建立合併請求] --> B[填寫標題和描述]
    B --> C[點選建立合併請求按鈕]
    C --> D[等待審核和合併]

圖表翻譯:

上述Mermaid圖表展示了建立合併請求的流程。首先,我們需要點選「建立合併請求」按鈕,然後填寫標題和描述。接下來,我們點選「建立合併請求」按鈕,等待審核和合併。

步驟9:合併變更到主分支

合併請求建立完成後,我們需要合併變更到主分支。但是在這之前,我們需要建立一個Jenkins工作任務,以便在合併程式碼到主分支時自動觸發工作任務,生成新的CalculatorAPI.jar檔案,並佈署到Nexus倉函式庫。

  graph LR
    A[合併變更到主分支] --> B[觸發Jenkins工作任務]
    B --> C[生成新的CalculatorAPI.jar檔案]
    C --> D[佈署到Nexus倉函式庫]

圖表翻譯:

上述Mermaid圖表展示了合併變更到主分支的流程。首先,我們需要合併變更到主分支,然後觸發Jenkins工作任務,生成新的CalculatorAPI.jar檔案,並佈署到Nexus倉函式庫。

在下一章中,我們將詳細介紹如何建立Jenkins工作任務,以便自動觸發工作任務,管理Java API版本。

版本控制與持續整合/持續佈署(CI/CD)已是現代軟體開發的根本。本文深入探討了Git版本控制、SSH金鑰設定,以及如何利用Jenkins自動化管理Java API版本,涵蓋了從程式碼修改、測試到佈署的完整流程。技術堆疊的各層級協同運作中體現了高度自動化的優勢,有效提升開發效率。

分析顯示,透過SSH金鑰設定,開發者能安全地存取遠端儲存函式庫,而多種設定方式則提供了彈性,滿足不同使用情境的需求。新增乘法功能和對應的單元測試案例,體現了測試驅動開發的最佳實踐。利用Jenkins的自動觸發機制,版本更新流程得以簡化,降低人為錯誤的風險,同時確保軟體品質。然而,自動化流程的建置需要一定的技術門檻,團隊需要投入時間和資源學習與維護。

展望未來,GitOps等新興技術的發展將進一步提升CI/CD的自動化程度和效率。預計未來幾年,自動化測試、佈署和版本管理將更加普及,成為軟體開發的標準流程。隨著工具鏈的成熟,這些技術的應用門檻也將逐步降低。

玄貓認為,掌握Git版本控制和CI/CD流程對於提升軟體開發效率和品質至關重要。對於追求卓越的開發團隊而言,積極擁抱這些技術,並持續探索新的自動化工具和方法,將是保持競爭力的關鍵。