基于docker的sonarqube安装使用说明

1,419 阅读2分钟

摘要:

本文主要介绍了基于docker环境的sonarqube的安装和简单使用

系统配置

  • /etc/sysctl.conf文件编辑

因为sonar使用了es所以需要更改两个文件句柄配置,内容如下

vm.max_map_count=524288
fs.file-max=131072
  • 生效文件
sysctl -p

服务搭建

简单搭建环境可以使用默认的H2数据库,但是为了以后的迁移推荐使用其他数据库进行持久化,本实例采用了postgres数据库

  • docker-compose.yml配置
version: "3"
services:
  sonar-postgres:
    image: postgres:14.4
    networks:
      - default
    container_name: sonar-postgres
    volumes:
      - ./postgres-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar@123
      - TZ=Asia/Shanghai
  sonarqube:
    image: sonarqube:8.9-community
    container_name: sonarqube
    networks:
      - default
    environment:
      - TZ=Asia/Shanghai
      - SONARQUBE_JDBC_USERNAME=sonar
      - SONARQUBE_JDBC_PASSWORD=sonar@123
      - SONARQUBE_JDBC_URL=jdbc:postgresql://sonar-postgres:5432/sonar
    volumes:
      - "./data:/opt/sonarqube/data"
      - "./logs:/opt/sonarqube/logs"
      - "./extensions:/opt/sonarqube/extensions"
    ports:
      - "9000:9000"
    depends_on:
      - sonar-postgres
networks:
  default:
    external:
      name: huzhihui
  • 启动
docker-compose up -d 
  • 查看服务
[root@localhost sonarqube]# docker ps
CONTAINER ID   IMAGE                     COMMAND                  CREATED          STATUS          PORTS                                       NAMES
878bc4a7287f   sonarqube:8.9-community   "bin/run.sh bin/sona…"   20 minutes ago   Up 20 minutes   0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   sonarqube
ea89a5311559   postgres:14.4             "docker-entrypoint.s…"   20 minutes ago   Up 20 minutes   5432/tcp                                    sonar-postgres

使用说明

docker-compose挂载的文件夹说明

  • ./postgres-data:/var/lib/postgresql/data

该文件夹保存了数据库的物理存储文件

  • ./data:/opt/sonarqube/data

该文件夹保存了sonarqube的数据文件

  • ./logs:/opt/sonarqube/logs

sonarqube的日志

  • ./extensions:/opt/sonarqube/extensions

sonarqube的插件,复制进去后需要重启容器才能加在插件

登陆系统(我本地是http://192.168.137.100:9000/

默认用户名和密码均是admin

  • 登陆成功后会让你修改默认密码,修改了即可
  • 中文插件使用

Administration菜单下的Marketplace搜索插件,然后点击install后并重启容器 image.png

  • 创建项目

本文用做测试的是maven项目,按照步骤会输出如下

image.png

  • 项目pom.xml配置

<project>标签内新增如下配置

<build>
    <pluginManagement>
        <plugins>
            <!--sonar 配置 -->
            <plugin>
                <groupId>org.sonarsource.scanner.maven</groupId>
                <artifactId>sonar-maven-plugin</artifactId>
                <version>3.9.0.2155</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
  • 项目中执行mvn构建
mvn sonar:sonar \
  -Dsonar.projectKey=TT \
  -Dsonar.host.url=http://192.168.137.100:9000 \
  -Dsonar.login=28cce84a5bc61428c0a6d142f71af91757e54858
  • 最后获得结果

image.png

其他好用的插件推荐

  • 阿里p3c插件

下载地址:去下载

  • 多分支扫描插件

下载地址:去下载

  • 安装方式

复制到插件文件夹${SONAR_HOME}/extensions/plugins下面,然后重启sonar

  • 阿里p3c插件使用方式

我们可以搜索到规则

image.png

然后创建质量配置并应用p3c

image.png

  • 多分支扫描插件使用方式
//maven项目 
$ mvn clean verify sonar:sonar -Dmaven.test.skip=true -Dsonar.branch=master 
//非maven项目 在sonar-project.properties文件里,增加sonar.branch.name的配置

最后推荐使用jenkins或者其他自动化工具构建