返回文章列表

Jenkins設定檔目錄結構與組態解析

本文解析 Jenkins 的設定檔、目錄結構與組態方法,包含 `JENKINS_HOME` 目錄下的關鍵檔案如 `config.xml`、`jobs` 目錄結構,以及設定 Java 路徑、啟動 Jenkins 服務、設定埠和登入 Jenkins 等操作步驟,幫助讀者快速掌握 Jenkins 的基本組態與管理技巧。

DevOps CI/CD

Jenkins 安裝後,所有設定檔和目錄都儲存在使用者家目錄下的 .jenkins 資料夾中,也就是 JENKINS_HOME。其中,config.xml 存放 Jenkins 全域設定,jobs 資料夾則包含所有專案的工作目錄,每個工作目錄下有 config.xmllatestbuilds 等子目錄和檔案,記錄建置歷程、設定和結果。設定 Java 路徑時,可修改 jenkins.xml 中的 <executable> 標籤。啟動 Jenkins 可使用 .war 檔案或 Windows 服務,設定埠則需修改 jenkins.xml/etc/default/jenkins。啟動後,即可透過瀏覽器登入 Jenkins 進行後續設定。

Jenkins 的設定檔和目錄結構

Jenkins 的設定檔和目錄結構是瞭解 Jenkins 安裝和組態的基礎。當您安裝 Jenkins 時,系統會在使用者家目錄($user.home)下的 .jenkins 目錄中建立一系列的設定檔和目錄。

Jenkins 的安裝目錄也被稱為 JENKINS_HOME。以下是 JENKINS_HOME 目錄結構的概覽:

  • config.xml:Jenkins 根組態檔
  • *.xml:其他站點範圍的組態檔
  • userContent:存放將在 Jenkins 伺服器下提供的檔案
  • fingerprint:存放指紋記錄
  • nodes:從屬機組態
  • plugins:存放外掛
  • secrets:存放當遷移憑證到其他伺服器時需要的秘密
  • workspace:版本控制系統的工作目錄
  • [JOBNAME]:每個工作的子目錄

瞭解這些設定檔和目錄結構可以幫助您更好地管理和組態您的 Jenkins 伺服器。

目錄結構圖

圖表翻譯:

上述 Plantuml 圖表顯示了 Jenkins 的目錄結構。JENKINS_HOME 是根目錄,包含了多個子目錄和檔案。每個子目錄和檔案都有其特定的用途,例如 config.xml 是 Jenkins 的根組態檔,而 userContent 目錄存放了將在 Jenkins 伺服器下提供的檔案。瞭解這個目錄結構可以幫助您更好地管理和組態您的 Jenkins 伺服器。

Jenkins 設定檔解析

Jenkins 的設定檔 jenkins.xml 位於 JENKINS_HOME 目錄中,包含了重要的設定引數。其中,<Service> 標籤包含了 Java 執行檔的位置,這是由玄貓使用的。

Java 路徑設定

玄貓會使用環境變數 PATH 中指定的 Java 版本。如需變更 Jenkins 使用的 Java 版本,可以在 <service> 標籤中加入 <executable> 標籤,指定所需 Java 安裝目錄中的 java.exe 全路徑。

Jenkins 工作目錄結構

  • jobs:工作目錄
    • [JOBNAME]:每個工作的子目錄
      • config.xml:工作組態檔
      • latest:指向最後一次成功建置的符號連結
      • builds:建置目錄
        • [BUILD_ID]:每個建置的目錄
          • build.xml:建置結果摘要
          • log:日誌檔
          • changelog.xml:變更記錄檔

Jenkins.xml 設定

<Service>
  <executable>指定Java路徑</executable>
</Service>

圖表翻譯:

此圖示

圖表翻譯:

此圖表描述了 Jenkins 的設定檔 jenkins.xml 中的 Service 標籤,該標籤包含了 Java 執行檔的路徑設定。透過指定 Java 的全路徑,可以變更 Jenkins 使用的 Java 版本。

組態Jenkins

在上一章中,我們已經瞭解瞭如何在不同的平臺上安裝Jenkins,並討論了重要的組態檔案和目錄結構。現在,是時候組態Jenkins以便於實際使用。

本章將討論如何啟動Jenkins使用.WAR檔案,以及透過Windows服務(如果Jenkins已經安裝為服務)。您將學習如何登入Jenkins並組態全域性設定和不同工具的路徑,這些工具將用於Jenkins的工作和管道中。

組態全域性設定和路徑

本文將解釋如何組態不同的工具/軟體,您將使用它們與Jenkins一起工作,例如Maven和JDK。

登入Jenkins

在開始組態Jenkins之前,我們將解釋如何啟動Jenkins伺服器並登入Jenkins。

啟動Jenkins伺服器

您可以透過.WAR檔案或Windows服務啟動Jenkins伺服器。如果您已經安裝了Jenkins作為服務,您需要啟動Jenkins服務。讓我們看看在Windows機器上啟動Jenkins伺服器的兩種方法:

  • 使用.WAR檔案啟動Jenkins伺服器(本文中使用版本2.289):在命令提示符中執行以下命令:

java -jar <.war檔案路徑> –httpListenAddress=<機器IP地址> –httpPort=<未被佔用的埠>

    執行此命令後,您必須等待直到Jenkins伺服器完全啟動並執行。
*   使用Windows服務啟動Jenkins伺服器:前往開始選單,輸入「Services」,然後選擇「Services」選項,這將開啟「Services」視窗。右鍵單擊Jenkins服務條目,然後單擊「啟動」(如果「啟動」選項被停用,這意味著Jenkins服務已經在您的機器上執行)。單擊「啟動」後,Jenkins服務將啟動。

一旦您單擊「開始」選單,Jenkins服務將在localhost:8080上啟動伺服器。如果您想在不同的IP地址和埠(而不是8080)上啟動伺服器,請開啟`$JENKINS_HOME\jenkins.xml`檔案。`$JENKINS_HOME`參考的是Jenkins安裝目錄,在我的機器上,Jenkins安裝路徑是`C:\magicuser\.jenkins`。在`<arguments>`標籤中新增`--httpListenAddress=<您的機器IP地址>`和`--httpPort=<所需埠號>`,如圖4-1所示。

#### 內容解密:

上述過程解釋瞭如何啟動Jenkins伺服器使用`.WAR`檔案或Windows服務。使用`.WAR`檔案啟動Jenkins伺服器需要執行特定的命令,而使用Windows服務啟動則需要啟動Jenkins服務。瞭解如何啟動Jenkins伺服器是組態和使用Jenkins的關鍵步驟。

#### 圖表翻譯:

此圖表展示了啟動Jenkins伺服器的兩種方法:使用`.WAR`檔案和使用Windows服務。圖表從「啟動Jenkins伺服器」開始,分支到兩個選項:使用`.WAR`檔案和使用Windows服務。使用`.WAR`檔案需要執行特定的命令,然後等待伺服器啟動。使用Windows服務需要啟動Jenkins服務,然後伺服器就會啟動。這個圖表幫助使用者瞭解啟動Jenkins伺服器的不同方法和步驟。

## 組態Jenkins

組態Jenkins是使用Jenkins的重要一步。以下將介紹如何組態Jenkins。

### 啟動Jenkins服務

要啟動Jenkins服務,可以使用以下命令:
```bash
sudo systemctl start jenkins

如果Jenkins服務無法啟動,可能是因為埠8080已被佔用。可以編輯 /etc/default/jenkins 檔案,將 HTTP_PORT=8080 行替換為 HTTP_PORT=<您的期望埠號>,然後重新啟動Jenkins服務。

檢查Jenkins服務狀態

可以使用以下命令檢查Jenkins服務狀態:

sudo systemctl status jenkins

開啟瀏覽器並登入

開啟瀏覽器,輸入Jenkins服務的URL,包括IP地址和埠號。輸入使用者名稱和密碼,然後點選登入按鈕。

內容解密:

上述命令和步驟是啟動Jenkins服務和登入Jenkins的基本過程。下面是詳細解說:

  • sudo systemctl start jenkins:啟動Jenkins服務。
  • sudo systemctl status jenkins:檢查Jenkins服務狀態。
  • HTTP_PORT=<您的期望埠號>:設定Jenkins服務的埠號。

Understanding the Configure System Options

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服務:使用 sudo systemctl start jenkins 命令啟動Jenkins服務。
  • 檢查Jenkins服務狀態:使用 sudo systemctl status jenkins 命令檢查Jenkins服務狀態。
  • 開啟瀏覽器並登入:開啟瀏覽器,輸入Jenkins服務的URL,包括IP地址和埠號。輸入使用者名稱和密碼,然後點選登入按鈕。
  • 組態Jenkins系統設定:組態Jenkins系統設定,包括設定Jenkins服務的埠號等。

從系統架構的視角來看,理解 Jenkins 的設定檔和目錄結構對於有效管理和維護 CI/CD 流程至關重要。本文深入剖析了 Jenkins 的核心組態 config.xml、工作區目錄結構以及關鍵設定檔如 jenkins.xml 中的 Java 路徑設定,並圖文並茂地闡述了目錄結構和設定流程。透過解析這些核心元件,可以發現 Jenkins 的高度可定製性和靈活性源於其模組化的設計和清晰的目錄結構。

然而,Jenkins 的靈活性也伴隨著一定的複雜性。對於初學者而言,掌握如此繁雜的目錄結構和組態選項可能具有一定的挑戰。此外,隨著外掛的增加,設定檔的管理也可能變得更加繁瑣。實務上,建議採用版本控制系統管理 Jenkins 的設定檔,並善用 Jenkins 的 Configuration as Code 外掛,以提升組態管理的效率和可追溯性。

展望未來,Jenkins 的組態管理將持續朝向自動化和程式碼化的方向發展。預計將會有更多工具和最佳實踐出現,以簡化 Jenkins 的組態流程並提升其可維護性。隨著雲原生技術的普及,Jenkins 也將更緊密地與 Kubernetes 等容器協調平臺整合,提供更彈性、可擴充套件的 CI/CD 解決方案。玄貓認為,深入理解 Jenkins 的底層架構和組態機制,對於構建高效、穩定的 CI/CD 流程至關重要,並能更好地應對未來技術發展的挑戰。對於追求 DevOps 最佳實踐的團隊而言,持續學習和精進 Jenkins 的組態管理技能將是不可或缺的。