iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0
IT Operation

迎接 AI 開發爆發期:告別手動部署,帶領企業團隊從 Git 規範到 CI/CD 實戰系列 第 15

Day 15 Jenkins 全域工具配置 (Global Tool Configuration) — 構建跨環境的抽象層

  • 分享至 

  • xImage
  •  

在完成 Jenkins Agent 節點的基礎環境安裝後,我們面臨下一個挑戰:**如何在 Pipeline 腳本中引用這些工具,而不必 Hardcoded 每個節點的具體安裝路徑?**這就是「全域工具配置 (Global Tool Configuration)」存在的意義。

為什麼需要工具抽象化?

在分散式建置環境中,不同的 Agent 可能安裝在不同的路徑下(例如 Windows 的 C:\Tools 與 Linux 的 /usr/bin)。透過 Jenkins 的工具管理機制,我們可以為工具定義一個「邏輯名稱」,並在 Pipeline 中調用。Jenkins 會根據目前執行節點的配置,自動解析出對應的「物理路徑」。這使得 Pipeline 具備了高度的可移植性。

實作:安裝 SonarScanner 工具 (Agent 節點)

在本專案中,我們主要使用兩種掃描器:針對 .NET 的 SonarScanner for MSBuild 以及通用的 SonarScanner CLI

1. 安裝 SonarScanner for .NET

此工具專門用於攔截 MSBuild 的編譯過程,分析 .NET 程式碼。因為原輔導計畫使用.NET Core做為後端環境,所以以.NET為範例。

# 建立專屬目錄
sudo mkdir -p /home/SonarQube/MSBuild
# 下載與解壓縮 (建議使用與 SonarQube Server 版本相容的穩定版)
sudo wget https://github.com/SonarSource/sonar-scanner-msbuild/releases/download/9.0.2.104486/sonar-scanner-9.0.2.104486-net.zip
sudo unzip sonar-scanner-9.0.2.104486-net.zip -d /home/SonarQube/MSBuild
sudo chmod -R 777 /home/SonarQube/MSBuild

2. 安裝 SonarScanner CLI (通用版本)

用於非 .NET 專案(如前端 React/Vue、Python、Go)的分析。

sudo mkdir -p /home/SonarQube/Scanner
# 下載與解壓縮 
sudo wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-6.2.1.4610-linux-x64.zip
sudo unzip sonar-scanner-cli-6.2.1.4610-linux-x64.zip -d /home/SonarQube/Scanner
sudo chmod -R 777 /home/SonarQube/Scanner

於 Jenkins UI 配置全域工具

請進入 Manage Jenkins -> Tools 進行以下設定:

1. 配置 SonarScanner for MSBuild

  • 點擊 Add SonarScanner for MSBuild
  • Name: SonarQube MSBuild Scanner (此名稱將用於 Pipeline 的 tool 指令)。
  • Install automatically: Uncheck (手動管理工具版本能提供更好的穩定性與離線建置能力)。
  • MSBUILD_SQ_SCANNER_HOME: /home/SonarQube/MSBuild (對應 Linux Agent 上的實際路徑)。

2. 配置 SonarQube Scanner

  • 點擊 Add SonarQube Scanner
  • Name: SonarQube Other Scanner
  • Install automatically: Uncheck
  • SONAR_RUNNER_HOME: /home/SonarQube/Scanner

技術細節:PATH 變數的處理

雖然 Jenkins 工具指令會動態解析路徑,但有時我們需要在 Shell 腳本中直接使用工具。建議在 Agent 節點的 /etc/environment 或 Jenkins Agent 配置中的 Environment variables 區塊加入對應路徑:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/SonarQube/MSBuild"

總結

透過全域工具配置,我們成功解耦了「Pipeline 邏輯」與「實體機器配置」。這讓 Jenkinsfile 變得更整潔,同時也為後續動態擴展 Agent 規模打下了基礎。

有了工具,下一步我們需要為 Jenkins 賦予與外部系統(如 GitLab, SonarQube)溝通的「權限」。我們將在下一章探討 Jenkins 的外掛管理與安全性配置。


上一篇
Day 14 Jenkins 分散式架構與執行節點 (Agent) 配置
系列文
迎接 AI 開發爆發期:告別手動部署,帶領企業團隊從 Git 規範到 CI/CD 實戰15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言