1. 程式人生 > 其它 >Sonar社群版容器安裝及C++支援

Sonar社群版容器安裝及C++支援

Sonar

一、版本

環境 版本
Debian Linux 11.02
Docker 20.10.8
Sonar 8.9.7-community
sonar-cxx 2.0.7
PostgreSQL 13.6-bullseye

二、安裝部署

Sonar安裝需要資料庫支援.
在該服務安裝過程中, 同時安裝了推薦資料庫PostgreSQL資料庫.

1. 修改系統虛擬引數

root使用者:

echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p

2. 目錄建立

sudo mkdir -p /app /data
sudo chown -R 1000:1000 /app /data

3. 拉取映象

docker pull postgres:13.6-bullseye
docker pull sonarqube:8.9.7-community

4. 建立新橋接網路

建立橋接網路層比link單向通訊更方便好用

docker network create docker-innet

5. 資料庫映象執行

使用預設的橋接方式

docker run \
        -d \
        -e TZ=Asia/Shanghai \
        -v /etc/localtime:/etc/localtime \
        --restart always \
        --name postgres \
        --net docker-innet \
        -p 5432:5432 \
        -v /data/postgres:/var/lib/postgresql/data \
        -e POSTGRES_PASSWORD=kLZ2SJiKExyxX574 \
        postgres:13.6-bullseye

密碼應每次隨機生成

6. 資料庫設定

docker exec -it postgres bash
psql -U postgres -W
create user sonar with password 'sonar';
create database sonar owner sonar;
grant all privileges on database sonar to sonar;

7. Sonar服務部署

docker run \
        -d \
        -e TZ=Asia/Shanghai \
        -v /etc/localtime:/etc/localtime \
        --restart always \
        --name sonar \
        --net docker-innet \
        -p 80:9000 \
        -v /app/sonar/logs:/opt/sonarqube/logs \
        -v /app/sonar/extensions:/opt/sonarqube/extensions \
        -v /data/sonar:/opt/sonarqube/data \
        -e sonar.jdbc.username=sonar \
        -e sonar.jdbc.password=sonar \
        -e sonar.jdbc.url=jdbc:postgresql://postgres:5432/sonar \
        sonarqube:8.9.7-community

8. 驗證服務

登入服務: http://127.0.0.1/
預設管理員: admin/admin
登陸後修改密碼

三、服務整合

1. LDAP服務整合

在7.9版本的Sonar之後,內建 LDAP功能,不需要安裝外掛
因該配置檔案本身及父級目錄許可權比較複雜, 無法在容器執行時掛載, 則可直接進入容器修改

  1. 進入容器
docker exec -it sonar bash
  1. 操作配置檔案
vi /opt/sonarqube/conf/sonar.properties

末尾新增內容:

#--------------------------
## LDAP 
sonar.security.realm=LDAP
ldap.url=ldap://127.0.0.XXX:389
ldap.bindDn=CN=Administrator,CN=Users,DC=ept,DC=com
ldap.bindPassword=XXXXX
ldap.user.baseDn=OU=MyCompany,DC=MyCompany,DC=com
ldap.user.request=(&(objectClass=user)(sAMAccountName={login}))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=email
  1. 重啟容器
docker restart sonar

四、配置調優

  1. 外掛安裝確認
    初次安裝外掛時需同意安裝外掛風險.
    Administration => Marketplace, I understand the risk
  2. 安裝中文包
    Administration => Marketplace, 搜尋chinese後, 點選install
  3. C++外掛支援

社群版本不支援C/C++的識別, 需要使用開源外掛進行支援.

docker restart sonar
  • 外掛市場確認安裝
    Administration => Marketplace, 搜尋CXX (Community)

  • 設定屬性
    配置 => 通用設定 => CXX
    配置 => 通用設定 => CXX External Analyzers