Requirement

Docker版本需要20.10及以上

1
yum install -y docker-ce

SonarQube Install

docker-compose.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sonarqube:
  image: sonarqube:community
  container_name: sonar
  environment:
    SONAR_JDBC_URL: jdbc:postgresql://128.0.100.170:5432/sonar
    SONAR_JDBC_USERNAME: sonar
    SONAR_JDBC_PASSWORD: sonar
  volumes:
    - ./sonarqube_data:/opt/sonarqube/data
    - ./sonarqube_extensions:/opt/sonarqube/extensions
    - ./sonarqube_logs:/opt/sonarqube/logs
  ports:
    - "9000:9000"
db:
  image: postgres:12
  container_name: sonar-db
  net: host
  environment:
    POSTGRES_USER: sonar
    POSTGRES_PASSWORD: sonar
  volumes:
    - ./sql_config:/var/lib/postgresql
    - ./sql_data:/var/lib/postgresql/data

访问9000端口即为SonarQube服务端控制台

Scan Code

进入项目根目录, -Dsonar.sources=src指定源码文件目录,-Dsonar.projectKey=test指定项目名称,可以不用创建,分析检测完会自动创建不存在的项目

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
docker run --rm \
    -e SONAR_HOST_URL="http://128.0.100.170:9000" \
    -e SONAR_LOGIN="0f55da1097f85b7c1ef667b871c861c2538df782" \
    -v "$(pwd):/usr/src" \
    -v /data/sonar_cache:/opt/sonar-scanner/.sonar/cache \
    sonarsource/sonar-scanner-cli \
    -Dsonar.projectKey=test \
    -Dsonar.sources=src
    # JAVA项目还需要指定classes文件目录,不然报错
    -Dsonar.java.binaries=target

关键的SONAR_LOGIN如何而来?登陆SonarQube

  1. Administraotr—>Encrypto–>Generate Secret Key

    将创建的密钥复制备用,下一步会用到

  2. Projects–>Create Project–>输入相关名字,这里随便输入字符串—>Locally —>Generate a token 粘贴前面复制的内容 –> Generate

    返回的 :=后面的内容即为Token