docker构建SonarQube进行代码质量检查

Posted by Naah on Sunday, Dec 08,2019 19:18:54

1 环境准备

1.1 docker环境准备

dockerk8srancher

1.2 宿主机创建所需的持久化目录(不持久化可跳过)

  1. postgresql数据库数据持久化目录
  2. sonar数据和插件持久化目录
mkdir -p /data/postgresql/data
mkdir -p /data/sonarqube/data
mkdir -p /data/sonarqube/extensions

1.3 设置宿主机虚拟内存

如果不设置,可能导致SonarQube镜像内部的es无法启动

sysctl -w vm.max_map_count=262144 
ulimit -n 65536 
ulimit -u 2048

2 安装

2.1 安装postgresql

docker run -d \
-p {postgresql映射的端口}:5432 \
-e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar \
-v /data/postgresql/data:/var/lib/postgresql/data \
--restart=always \
postgres 

2.2 安装SonarQube

2.2.1 从docker内复制SonarQube插件(不持久化可跳过)

这步是最繁琐的,如果选择持久化却不进行这步操作会导致sonar无法启动

  1. 先临时启动一个sonarqube镜像,将镜像内的插件copy出去

    # 运行这步后会进入SonarQube镜像内部
    docker run -it --rm -v /data/sonarqube/data:/opt/sonarqube/data sonarqube:7.7-community bash
    cd /extensions
    cp -r ./* ../data
    # 运行这步会退出SonarQube镜像
    exit
    
    1. 将之前拷贝的插件,复制到extensions目录 > 当前环境应该是宿主机 bash mv /data/sonarqube/data/* /data/sonarqube/extensions

2.2.2 启动SonarQube

启动后要等一会才能启动,账号密码默认都是admin

docker run -d \
-p 9000:9000 \
-e SONARQUBE_JDBC_URL=jdbc:postgresql://{你的机器ip}:{postgresql映射的端口}/sonar \
-v /data/sonarqube/data:/opt/sonarqube/data \
-v /data/sonarqube/extensions:/opt/sonarqube/extensions \
--restart=always \
sonarqube:7.7-community

3 配置

3.1 汉化

  1. 进入SonarQube
  2. 点击顶部Administration
  3. 点击下方Marketplace
  4. 点击All
  5. 搜索Chinese Pack(这步可能会慢一些,要等一会)
  6. 点击install

3.2 语言规则

SonarQube支持很多语言,进行搜索安装即可,下面列出常用的插件

  1. Chinese Pack:中文语言包
  2. SonarJava:java扫描规则插件
  3. SonarPython:python扫描规则插件
  4. Findbugs:java扫描规则插件,属于扩展包
  5. SonarJS:js、vue扫描规则插件
  6. SonarHTML:html扫描规则插件
  7. p3c:阿里巴巴的java代码规范,下载不到,需要自己打包,下节再讲如何安装这个

4 如何扫描代码

4.1 sonar-scanner代码扫描

会在CI/CD流程搭建那篇文章中讲

4.2 maven插件扫描

见下一篇文章 SonarQube7.7安装阿里JAVA规范插件P3C