返回文章列表

Jenkins工作組態與管理核心

本文深入探討 Jenkins 工作的組態與管理,包含工作型別、觸發器、建置步驟、後置建置動作、工件管理、引數化建置等核心概念,並提供圖表輔助理解 Jenkins 工作流程,讓讀者快速掌握 Jenkins 的使用方法。

DevOps CI/CD

Jenkins 作為 CI/CD 工具,其核心功能圍繞「工作」展開。工作定義了自動化流程的各個環節,從程式碼建置、測試到佈署,都由工作串聯起來。理解 Jenkins 工作的運作方式是掌握 CI/CD 自動化的關鍵。本文將詳細介紹 Jenkins 工作的各個組成部分,包含觸發器、建置步驟、後置建置動作,以及如何管理建置產生的工件。此外,文章也說明瞭如何使用引數化建置,讓工作更具彈性,以適應不同的建置需求。

設定 Jenkins 工作如同撰寫自動化指令碼,需要明確指定執行時機、執行內容以及後續處理動作。觸發器決定了工作啟動的條件,例如定時執行、程式碼提交觸發等。建置步驟則定義了工作執行的具體指令,例如編譯程式碼、執行測試、封裝應用程式等。後置建置動作則處理建置完成後的任務,例如傳送通知、佈署應用程式等。此外,妥善管理建置產生的工件,例如編譯後的程式碼、測試報告等,對於追蹤建置歷史和問題排查至關重要。活用引數化建置,可以根據不同的需求調整工作的執行方式,例如指定不同的程式碼分支、設定不同的建置環境等,提升工作的靈活性。

瞭解Jenkins中的工作

在前面的章節中,我們學習了使用Jenkins進行CI/CD的基本概念。在接下來的章節中,我們將關注如何在實際專案中使用Jenkins。這個章節是您邁向這個新旅程的第一步。

回顧一下,Jenkins作為一個自動化伺服器,可以執行不同任務來自動化端對端的構建生命週期。這些任務以工作(Job)的形式組態在Jenkins中。本章介紹了這個非常重要且整合的概念。

什麼是Jenkins中的工作?

Jenkins中的工作是一組指令,告訴Jenkins什麼時候做什麼事情。工作也被稱為Jenkins專案。在組態任何型別的工作時,您可以組態以下三種型別的指令:

  1. 何時執行特定任務:您可以告訴Jenkins何時開始執行工作中提到的任務。在Jenkins的術語中,這套指令被稱為觸發器(Trigger)。

  2. 作為任務的一部分要做什麼:您可以組態要執行的步驟,以實作特定的目標。在Jenkins的術語中,這套指令被稱為構建步驟(Build Step)。例如,構建步驟可以是執行一個簡單的批次命令。

  3. 任務完成後要做什麼:您可以組態工作完成後要做什麼。在Jenkins的術語中,這套指令被稱為後置構建動作(Post Build Actions)。例如,它可以通知使用者任務的成功或失敗。或者,如果Jenkins任務是編譯Java程式碼,那麼後置構建動作可以是將生成的類別檔案複製到所需位置。

什麼是Jenkins中的構建?

在Jenkins中,構建是指Jenkins工作的一次特定執行。您可以多次執行Jenkins工作,每次執行都會獲得一個唯一的構建號碼。所有與特定執行相關的詳細資訊,例如建立的工件、主控臺日誌等,都儲存在該構建號碼下。

什麼是Jenkins中的自由式工作?

Jenkins允許您根據需要建立不同型別的工作,例如管道工作和自由式工作。自由式工作是典型的構建工作或任務。它們可以簡單到執行測試、構建或封裝應用程式,或者傳送報告。自由式工作適合於簡單的構建任務。我在本章介紹了自由式工作的概念,因為您將要檢視不同工作組態的示例。

內容解密:

  • Jenkins中的工作是一組指令,定義了要執行的任務和執行時間。
  • 工作可以組態觸發器、構建步驟和後置構建動作。
  • 構建是指Jenkins工作的一次特定執行,具有唯一的構建號碼。
  • 自由式工作是一種典型的構建工作或任務,適合於簡單的構建任務。

圖表翻譯:

本圖表描述了Jenkins中的工作組態流程,從觸發器到後置構建動作,最終到達構建執行和結果輸出。

Jenkins 工作建立與組態

在瞭解了 Jenkins 工作的基本概念後,您現在可以開始建立一個工作。以下是建立工作的步驟:

  1. 登入 Jenkins 系統並前往儀錶板。
  2. 點選「新建工作」連結,該連結位於儀錶板左側。
  3. 如果您尚未建立任何工作,您將在空白的 Jenkins 儀錶板上看到「建立工作」連結。點選此連結以開始建立工作。
  4. 無論您是否有現有的工作,點選「新建工作」或「建立工作」連結都會將您導致同一頁面,即工作建立頁面。
  5. 在工作建立頁面上,輸入適合的工作名稱,並選擇「自由式專案」選項。點選「確定」按鈕以繼續。

工作組態

在工作組態頁面上,您可以根據需要組態不同的設定。以下是每個部分的詳細介紹:

基本設定

  • 描述:在此欄位中,您可以描述工作的目的,例如編譯 Java 函式庫專案。
  • 刪除舊的構建:構建代表著與工作執行相關的資料,例如控制檯輸出、執行後產生的工件等。

有兩個選項可決定何時刪除構建歷史資料:

  • 構建年齡:例如,丟棄七天前的構建。
  • 構建數量:當達到一定數量的構建時,丟棄最舊的構建。

您可以設定最長保留時間和最大保留數量。超過這些限制後,最舊的構建將被刪除。選擇此選項並組態相關設定非常重要,以節省磁碟空間。

進階設定

點選「高階」按鈕後,您將看到兩個額外的欄位:儲存工件天數儲存帶工件的最大構建數量。這些設定允許您更細緻地控制構建和工件的儲存。

Plantuml 圖表:Jenkins 工作組態流程

圖表翻譯:

此圖表展示了在 Jenkins 中建立和組態工作的步驟。從登入 Jenkins 到儲存工作組態,每一步驟都清晰地展示了建立和設定 Jenkins 工作的過程。

Jenkins 工作組態與管理

Jenkins 中的工作(Job)是指一系列的任務集合,例如編譯 Java 應用程式、執行測試等。每個工作都會產生特定的輸出,例如編譯後的 JAR 檔案,這些輸出被稱為工件(Artifact)。

工件管理

工件是工作執行後產生的輸出,可以是檔案、目錄或其他形式的資料。您可以設定工件保留的天數,例如設定為 3 天,則工件將在 3 天後被刪除,但工作的其他細節,如主控臺記錄,將不會被刪除,直到工作超過設定的天數。

此外,您還可以設定最大保留工件數量的工作數量,例如設定為 5,則最近 5 次工作的工件將被保留。

外部輸入引數

如果您的工作需要外部輸入,您需要勾選「此專案已引數化」選項,並從可用的下拉選單中選擇所需的輸入型別,例如布林值、字串等。

引數設定

您可以設定引數的名稱、預設值和描述。例如,如果您想要將字串值作為輸入傳遞給工作,您可以選擇「字串引數」選項,並填入引數名稱、預設值和描述。

存取引數值

您可以在工作的建置步驟中存取引數值,並將其印出到主控臺。後續章節將涵蓋如何在建置步驟中存取引數值和使用引數的實際應用。

停用專案

如果您選擇停用專案,則工作將不會被執行,且不會建立新的建置。這是一個有用的設定,如果您暫時不想使用某個工作,可能是因為所需的基礎設施不可用。

並發建置

Jenkins 可以執行單一工作的多個建置,但只有一個建置可以在同一時間執行。如果您嘗試執行多個建置,則後續的建置將被放入佇列中,直到前一個建置完成。

這個預設選項對於需要獨佔目錄或檔案許可權的工作非常重要,以確保工作能夠正確地執行。

內容解密:

以上內容介紹了 Jenkins 工作組態與管理的相關知識,包括工件管理、外部輸入引數、引數設定、存取引數值、停用專案和並發建置等。瞭解這些知識可以幫助您更好地使用 Jenkins 進行工作組態與管理。

@startuml
skinparam backgroundColor #FEFEFE

title Jenkins工作組態與管理核心

|開發者|
start
:提交程式碼;
:推送到 Git;

|CI 系統|
:觸發建置;
:執行單元測試;
:程式碼品質檢查;

if (測試通過?) then (是)
    :建置容器映像;
    :推送到 Registry;
else (否)
    :通知開發者;
    stop
endif

|CD 系統|
:部署到測試環境;
:執行整合測試;

if (驗證通過?) then (是)
    :部署到生產環境;
    :健康檢查;
    :完成部署;
else (否)
    :回滾變更;
endif

stop

@enduml

圖表翻譯:

此圖表展示了 Jenkins 工作組態與管理的流程,從工作組態開始,到工件管理、外部輸入引數、引數設定、存取引數值、停用專案和並發建置等各個步驟。每個步驟都對應著不同的功能和設定,幫助您更好地理解和使用 Jenkins 進行工作組態與管理。

從技術架構視角來看,Jenkins 工作的設計體現了高度的模組化和可組態性。透過觸發器、構建步驟和後置構建動作的組合,使用者可以靈活地定義各種自動化流程,從簡單的程式碼編譯到複雜的CI/CDPipeline都能有效涵蓋。然而,自由式工作的組態方式在面對更複雜的場景時,例如多階段構建、條件判斷等,其管理和維護成本會顯著提升。此外,大量的引數化組態也可能增加錯誤發生的機率,尤其在團隊協作的環境下,更需要重視組態的規範化和版本控制。對於追求更高效能和可維護性的團隊,Pipeline as Code 的方式更值得評估,它能將構建流程以程式碼的形式管理,提升自動化流程的可讀性、可測試性和可重複性。未來,Jenkins 的發展方向將更趨向於Pipeline as Code 的普及,並整合更多雲原生技術,以更好地支援現代軟體開發流程。對於希望最大化 Jenkins 價值的團隊而言,及早學習和應用 Pipeline as Code 將是提升團隊效率的關鍵策略。