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

posted @ 2022-03-28 11:41  Jrri  阅读(566)  评论(0编辑  收藏  举报