iT邦幫忙

2026 iThome 鐵人賽

DAY 11
0
IT Operation

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

Day 11 品質的基石:SonarQube 基礎環境與資料庫配置

  • 分享至 

  • xImage
  •  

前言

在建立現代化 CI/CD 流程時,程式碼品質的自動化檢測是維持系統穩定性的核心門禁。SonarQube 作為企業級的靜態代碼分析工具,其運行穩定性高度依賴於底層基礎設施與資料庫的效能。本篇將導引你完成 Linux 核心參數調優、Docker 環境建置,以及專為 SonarQube 優化的 PostgreSQL 17 資料庫配置。

在我們的架構中,SonarQube 與 Jenkins 將統一配置在 <REVERSE_PROXY_IP> 的 IIS Reverse Proxy 之後,確保外部存取的安全性與網址的一致性。

系統核心參數微調

SonarQube 內建的 Elasticsearch 對虛擬記憶體與檔案描述符有嚴格要求。若未進行微調,系統在高負載下極易崩潰。

1. 虛擬記憶體與檔案限制

編輯 /etc/sysctl.conf 並加入以下配置:

# 提升最大虛擬記憶體區域數量,確保 Elasticsearch 正常運作
vm.max_map_count=524288
# 提升系統級別的最大開啟檔案數
fs.file-max=131072

執行 sudo sysctl -p 立即生效。

2. 使用者資源限制 (ulimit)

編輯 /etc/security/limits.conf

* soft nofile 131072
* hard nofile 131072
* soft nproc 8192
* hard nproc 8192

Docker 基礎環境準備

我們採用 Docker 部署 SonarQube 以確保環境一致性:

# 安裝 Docker Engine
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

PostgreSQL 17 資料庫配置

SonarQube 需要穩定且高效的關聯式資料庫來儲存掃描結果與趨勢數據。

1. 安裝與基本設定

sudo apt install postgresql-17
sudo systemctl enable postgresql --now

2. 網路連線與安全性優化

  • 編輯 /etc/postgresql/17/main/postgresql.conf,設定 listen_addresses = '*' 以接收容器連線。

  • 接著編輯 /etc/postgresql/17/main/pg_hba.conf,將驗證方式改為密碼驗證:

host all all 0.0.0.0/0 md5

3. 初始化專用資料庫

進入 PostgreSQL 執行以下初始化指令:

-- 建立服務帳號與資料庫
CREATE USER sonarqube WITH PASSWORD 'YourStrongPassword';
CREATE DATABASE sonarqubedb WITH OWNER sonarqube ENCODING 'UTF8';

-- 權限隔離設計
\c sonarqubedb
CREATE SCHEMA sonarqube_schema AUTHORIZATION sonarqube;
ALTER USER sonarqube SET search_path TO sonarqube_schema;
GRANT ALL PRIVILEGES ON DATABASE sonarqubedb TO sonarqube;
GRANT ALL ON SCHEMA sonarqube_schema TO sonarqube;

結語

透過對系統核心參數的精確調優與資料庫的規範化建置,我們為 SonarQube 打造了一個穩固的運行平台。這確保了未來在面對大規模專案掃描時,系統能維持高性能與高可用性。

明天的文章,我們將正式啟動 SonarQube Server 容器,並配置關鍵的品質門禁(Quality Gate)。


上一篇
Day 10 AI 時代的註解與 Doc-string 規範
下一篇
Day 12 Docker 部署 SonarQube Server 與 Webhook 整合
系列文
迎接 AI 開發爆發期:告別手動部署,帶領企業團隊從 Git 規範到 CI/CD 實戰15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言