在完成 Jenkins Agent 節點的基礎環境安裝後,我們面臨下一個挑戰:**如何在 Pipeline 腳本中引用這些工具,而不必 Hardcoded 每個節點的具體安裝路徑?**這就是「全域工具配置 (Global Tool Configuration)」存在的意義。
在分散式建置環境中,不同的 Agent 可能安裝在不同的路徑下(例如 Windows 的 C:\Tools 與 Linux 的 /usr/bin)。透過 Jenkins 的工具管理機制,我們可以為工具定義一個「邏輯名稱」,並在 Pipeline 中調用。Jenkins 會根據目前執行節點的配置,自動解析出對應的「物理路徑」。這使得 Pipeline 具備了高度的可移植性。
在本專案中,我們主要使用兩種掃描器:針對 .NET 的 SonarScanner for MSBuild 以及通用的 SonarScanner CLI。
此工具專門用於攔截 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
用於非 .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
請進入 Manage Jenkins -> Tools 進行以下設定:
Add SonarScanner for MSBuild。SonarQube MSBuild Scanner (此名稱將用於 Pipeline 的 tool 指令)。Uncheck (手動管理工具版本能提供更好的穩定性與離線建置能力)。/home/SonarQube/MSBuild (對應 Linux Agent 上的實際路徑)。Add SonarQube Scanner。SonarQube Other Scanner。Uncheck。/home/SonarQube/Scanner。雖然 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 的外掛管理與安全性配置。